存储类型
String 类型的无序集合,最大存储数量2^32-1(40亿左右)
存储(实现)原理
Redis用intset或hashtable存储set。如果元素都是整数类型,就用inset存储。如果不是整数类型,就用hashtable(数组+链表的存来储结构)。在这里就不再重复贴图。
KV怎么存储set的元素?key就是元素的值,value为null。
如果元素个数超过512个,也会用hashtable存储,可通过配置调整。
redis.conf
set-max-intset-entries 512
127.0.0.1:6379> sadd lset 1 2 3 3 4 5 6 7
(integer) 7
127.0.0.1:6379> object encoding lset
"intset"
127.0.0.1:6379> sadd strset a b c d e f f
(integer) 6
127.0.0.1:6379> object encoding strset
"hashtable"
Set集合类型有一些集合的一些特有命令,可以结合特殊场景具体使用。比如:
命令
说明
sdiff key1 [key2]
两个set集合取差集
sinter key1 [key2]
两个set集合取交集
srandmember key [count]
返回集合中一个或多个随机数
命令集合之后统一整理,不再这里赘述了