加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Redis避不开的五种数据结构

发布时间:2018-10-29 15:00:59 所属栏目:编程 来源:编辑部的故事
导读:Redis 中有 5 种数据布局,别离是字符串(String)、哈希(Hash)、列表(List)、荟萃(Set)和有序荟萃(Sorted Set),由于行使 Redis 场景的开拓中必定是无法避开这些基本布局的,以是纯熟把握它们也就成了一项必不行少的手段。本文章精腹地先容了 Redis 的这几

有序荟萃范例的内部编码有两种,它们别离是:

  • ziplist(压缩列表):当有序荟萃的元素个数小于 128 个(默认配置),同时每个元素的值都小于 64 字节(默认配置),Redis 会回收 ziplist 作为有序荟萃的内部实现。
  • skiplist(跳跃表):当上述前提不满意时,Redis 会回收 skiplist 作为内部编码。

备注:上述中的默认值,也可以通过以下参数配置:zset-max-ziplist-entries 和 zset-max-ziplist-value。

下面我们用以下示例来验证上述结论。

当元素个数较量少,而且每个元素也较量小时,内部编码为 ziplist:

Redis避不开的五种数据布局

当元素个数高出 128 时,内部编码为 skiplist。下面我们将回收 python 动态建设128个元素,下面为源码:

  1. import redis  
  2. r = redis.Redis(host='127.0.0.1', port=6379)  
  3. if r.object('encoding', 'zsetkey') != None:  
  4. print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8')) 
  5. for i in range(1, 600):  
  6. r.zadd('zsetkey',i,1)  
  7. if r.object('encoding', 'zsetkey') != None:  
  8. print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))  
  9. Key为【zsetkey】的字节编码为【ziplist】  
  10. Key为【zsetkey】的字节编码为【skiplist】 

当有序荟萃中有任何一个元素大于 64 个字节时,内部编码为 skiplist。

  1. import redis  
  2. r = redis.Redis(host='127.0.0.1', port=6379)  
  3. if r.object('encoding', 'zsetkey') != None:  
  4. print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))  
  5. value = ''  
  6. for i in range(1, 600):  
  7. value += str(i)  
  8. r.zadd('zsetkey',value,1)  
  9. if r.object('encoding', 'zsetkey') != None:  
  10. print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))  
  11. Key为【zsetkey】的字节编码为【skiplist】 
Redis避不开的五种数据布局

到这里,本文就竣事了,写了这么多,着实首要大部门是关于呼吁的简朴先容,个中也先容了一些要害要点,若有不正确的处所,接待留言。

【编辑保举】

  1. 想用数据库“读写疏散” 请先大白“读写疏散”办理什么题目
  2. 如作甚双活Redis Enterprise搭建基于Docker的开拓情形?
  3. 数据库常用的事宜断绝级别都有哪些?都是什么道理?
  4. Redis 5.0正式宣布!引入流数据范例
  5. Redis的各项成果办理了哪些题目?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读