Redis--集合

集合(set)类型也是用来保存多个字符串元素的,但是和列表不一样的是,集合中不允许有重复元素,并且集合中元素是无序的,不能通过索引下标获取元素。

一个集合最多可以存储2^32 - 1个元素,Redis除了支持集合的增删改查,同时还支持多个集合取交集,并集,差集。


命令:

-- 添加元素

    sadd key element [element...] 返回添加成功的元素个数

-- 删除元素

    srem key element [element...] 返回成功删除元素个数

-- 计算元素个数

    scard key 

        scard 的时间复杂度为O(1),他不会遍历集合所有元素,而是直接用Redis内部的变量

-- 判断元素是否在集合中

    sismember key element

-- 随机从集合返回指定个数元素

    srandmember key [count]

    [count]可选项,如果不写默认为1

-- 随机从集合中弹出元素

    spop key

    Redis 3.2之后,spop 也支持[count] 参数。

    srandmember和spop都是随机从集合选出元素,两者不同的是spop命令执行后,元素会从集合中删除,而srandmember不会。

-- 获取所有元素

    smembers key

    注意:smembers 和 lrange、hgetall都属于比较重的命令,元素过多,可能会阻塞Redis,可以用sscan来完成


集合间操作:

-- 求多个集合的交集

sinter key [key...]

-- 求多个集合的并集

sunion key [key...]

-- 求多个集合的差集

sdiff key [key...]

-- 将交集、并集、差集的结果保存

sinterstore destination key [key...]

sunionstore destination key [key...]

sdiffstore destination key [key...]


内部编码:

-- intset(整数集合):当集合汇总元素都是整数且元素个数小于set-max-intset-entries配置(默认512)时,Redis会选用intset来作为集合的内部实现,而减少内存使用

-- hashtable(哈希表):当集合类型无法满足intset要求的时候,Redis会使用hashtable作为集合的内部实现

你可能感兴趣的:(Redis--集合)