| 
                         有序集合类型的内部编码有两种,它们分别是: 
    - 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                        (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |