内容来自:
《redis设计与实现》购买本书请访问: 京东商城
《Redis 深度历险:核心原理与应用实践》购买本书请访问: 京东商城
redis集合对象
集合对象的编码可以是 intset
或者 hashtable
。
intset
intset
编码的集合对象使用整数集合作为底层实现, 集合对象包含的所有元素都被保存在整数集合里面。
如:
redis> SADD numbers 1 3 5
(integer) 3
intset编码
hashtable
hashtable
编码的集合对象使用字典作为底层实现, 字典的每个键都是一个字符串对象, 每个字符串对象包含了一个集合元素, 而字典的值则全部被设置为 NULL
。
如:
redis> SADD fruits "apple" "banana" "cherry"
(integer) 3
hashtable编码
-
编码的转换
当集合对象可以同时满足以下两个条件时, 对象使用
intset
编码:-
集合对象保存的所有元素都是整数值
-
集合对象保存的元素数量不超过
512
个第二个条件的上限值是可以修改的, 具体请看配置文件中关于
set-max-intset-entries
选项的说明。
-
-
集合部分命令实现
因为集合键的值为集合对象, 所以用于集合键的所有命令都是针对集合对象来构建的, 表 8-10 列出了其中一部分集合键命令, 以及这些命令在不同编码的集合对象下的实现方法。
表 8-10 集合命令的实现方法
网友评论