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

Redis避不开的五种数据布局

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

内部编码

  • intset(整数荟萃):当荟萃中的元素都是整数,而且荟萃中的元素个数小于 512 个时,Redis 会选用 intset 作为底层内部实现。
  • hashtable(哈希表):当上述前提不满意时,Redis 会回收 hashtable 作为底层实现。

备注:我们可以通过 set-max-intset-entries 参数来配置上述中的默认参数。

下面我们看一下详细的事例,来验证我们上面提到的内部编码。

当元素个数较少而且都是整数时,内部编码为 intset。

Redis避不开的五种数据布局

当元素不满是整数时,内部编码为 hashtable。

Redis避不开的五种数据布局

当元素个数高出 512 个时,内部编码为 hashtable。

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

有序荟萃范例

看名字我们就知道,有序荟萃也是一种荟萃,而且这个荟萃照旧有序的。列表也是有序的,那它和有序荟萃又有什么差异呢?有序荟萃的有序和列表的有序是差异的。列表中的有序指的的是插入元素的次序和查询元素的次序沟通,而有序荟萃中的有序指的是它会为每个元素配置一个分数(score),而查询时可以通过度数计较元素的排名,然后再返回功效。由于有序荟萃也是荟萃范例,以是有序荟萃中也是不插入一再元素的,但在有序荟萃平分数则是可以一再,那假如在有序荟萃中有多个元素的分数是沟通的,这些一再元素的排名是怎么计较的呢?后边我们再做具体声名。

下面先看一下列表、荟萃、有序荟萃三种数据范例之间的区别:

呼吁

1.荟萃内操纵

添加元素

(编辑:湖南网)

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

热点阅读