目录
目标
SADD
SMOVE
SPOP
SREM
SCARD key
SISMEMBER
SMEMBERS key
SRANDMEMBER
SSCAN
SDIFF
SDIFFSTORE
SINTER
SINTERSTORE
SUNION
SUNIONSTORE
目标
列举redis中与set相关的指令,包括作用、使用时需要注意的地方等。对于某些基本用不到的指令仅一带而过。
SADD
SADD key member [member ...]
O(N) N:参数member数量,一个参数元素,则O(1)
将members添加到key对应的set,若member已存在则忽略,如果key不存在则新建set并添加members。
返回实际添加的元素个数,不包括已存在的。若key对应val不是set,则返回error
SMOVE
SMOVE source destination member
O(1)
原子操作,将一个元素从source移动到dest,元素仅存在于source或dest。如果source不存在或无该元素,则不执行任何操作并返回0,如果dest应存在元素,则仅从source删除元素。
成功移动则返回1,source不存在或不包含元素则返回0
SPOP
SPOP key [count]
O(N) 无参数count则O(1),否则N=count
删除并返回count数量的随机元素
若count大于set元素数量,则针对set所有元素进行操作
随机元素,不保证均匀分布
SREM
SREM key member [member ...]
O(N) N:参数中元素数量
从set中删除元素,若元素不存在则忽略。
返回实际删除的元素数量,若key不存在则返回0,若key对应val不是set则error
SCARD key
O(1)
返回set中元素数量,若key不存在则返回0
SISMEMBER
SISMEMBER key member
O(1)
判断参数member是否已经在set中
元素已存在返回1,key不存在或元素不存在则返回0
SMEMBERS key
数组形式返回set中所有元素
O(N)
SRANDMEMBER
SRANDMEMBER key [count]
O(N) 无参数count则O(1),否则N=count
仅返回随机数量的元素,不删除
返回
无count时随机返回一个元素,count>0随机返回count数量的不相同的元素,count<1随机返回count数量的可能相同的元素
无count且key不存在,返回null
有count且key不存在,返回empty数组
返回结果不是均衡分布的
选择元素的类似方式
从hash表中选出一个not empty的bucket,检查其中元素数量并返回一个元素
SSCAN
SDIFF
SDIFF key [key ...]
O(N) N:参数keys对应set中的元素数量之和
所有set的差集,key不存在视为empty set
SDIFFSTORE
SDIFFSTORE destination key [key ...]
将keys的差集存储到dest,若dest应存在则覆盖
返回差集元素个数
SINTER
SINTER key [key ...]
O(N*M) N:最小set的元素数量,M:key数量
返回所有keys对应set的交集,只要有一个set是empty则直接返回empty数组
SINTERSTORE
SINTERSTORE destination key [key ...]
将sets交集存储到dest,若dest已存在则覆盖
返回交集中元素数量
SUNION
SUNION key [key ...]
O(N) N:keys对应set的元素数量之和
返回并集
SUNIONSTORE
SUNIONSTORE destination key [key ...]
将并集存储到dest
返回并集元素数量