有序荟萃范例的内部编码有两种,它们别离是:
- ziplist(压缩列表):当有序荟萃的元素个数小于 128 个(默认配置),同时每个元素的值都小于 64 字节(默认配置),Redis 会回收 ziplist 作为有序荟萃的内部实现。
- skiplist(跳跃表):当上述前提不满意时,Redis 会回收 skiplist 作为内部编码。
备注:上述中的默认值,也可以通过以下参数配置:zset-max-ziplist-entries 和 zset-max-ziplist-value。
下面我们用以下示例来验证上述结论。
当元素个数较量少,而且每个元素也较量小时,内部编码为 ziplist:
当元素个数高出 128 时,内部编码为 skiplist。下面我们将回收 python 动态建设128个元素,下面为源码:
- import redis
- r = redis.Redis(host='127.0.0.1', port=6379)
- if r.object('encoding', 'zsetkey') != None:
- print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))
- for i in range(1, 600):
- r.zadd('zsetkey',i,1)
- if r.object('encoding', 'zsetkey') != None:
- print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))
- Key为【zsetkey】的字节编码为【ziplist】
- Key为【zsetkey】的字节编码为【skiplist】
当有序荟萃中有任何一个元素大于 64 个字节时,内部编码为 skiplist。
- import redis
- r = redis.Redis(host='127.0.0.1', port=6379)
- if r.object('encoding', 'zsetkey') != None:
- print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))
- value = ''
- for i in range(1, 600):
- value += str(i)
- r.zadd('zsetkey',value,1)
- if r.object('encoding', 'zsetkey') != None:
- print('Key为【zsetkey】的字节编码为【%s】' % r.object('encoding', 'zsetkey').decode('utf-8'))
- Key为【zsetkey】的字节编码为【skiplist】
到这里,本文就竣事了,写了这么多,着实首要大部门是关于呼吁的简朴先容,个中也先容了一些要害要点,若有不正确的处所,接待留言。
【编辑保举】
- 想用数据库“读写疏散” 请先大白“读写疏散”办理什么题目
- 如作甚双活Redis Enterprise搭建基于Docker的开拓情形?
- 数据库常用的事宜断绝级别都有哪些?都是什么道理?
- Redis 5.0正式宣布!引入流数据范例
- Redis的各项成果办理了哪些题目?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|