目录
SADD key member [member ...]:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd myset a b c d e f g h i j k l m n # 向key中添加集合元素,key不存在则自动创建空的key集合
- (integer) 14
- 127.0.0.1:6379> set name lisi # 初始化非集合key
- OK
- 127.0.0.1:6379> sadd name zhangsan # 向非集合中执行sadd
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N), N 是被添加的元素的数量。
返回值:
SCARD key:返回集合中的元素数量
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> scard myset2 # 不存在key
- (integer) 0
- 127.0.0.1:6379> sadd myset a b c d e f g h i j k l m n
- (integer) 14
- 127.0.0.1:6379> scard myset # 存在集合key
- (integer) 14
- 127.0.0.1:6379> set name lisi # 初始化非集合key
- OK
- 127.0.0.1:6379> scard name # 对非集合key执行scard命令
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(1)。
返回值:
SPOP key:移除并返回集合中的一个随机元素。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd myset a # 初始化集合
- (integer) 1
- 127.0.0.1:6379> spop myset
- "a"
- 127.0.0.1:6379> spop myset # 集合为空
- (nil)
- 127.0.0.1:6379> spop myset2 # 不存在的key
- (nil)
- 127.0.0.1:6379> set name lisi
- OK
- 127.0.0.1:6379> spop name # key 不为集合
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(1)。
返回值:
SREM key member [member ...]:移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd myset a b c d e # 初始化集合
- (integer) 5
- 127.0.0.1:6379> srem myset a b c d # 移除 a b c d
- (integer) 4
- 127.0.0.1:6379> srem myset a b c d e
- (integer) 1 # 移除 a b c d e,不存在元素忽视了
- 127.0.0.1:6379> srem myset2 a
- (integer) 0 # 移除不存在key似为空集合
- 127.0.0.1:6379> set name list
- OK
- 127.0.0.1:6379> srem name 1 # key不为集合,报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度为O(N), N 为给定 member 元素的数量
返回值:
SMOVE source destination member:将 member 元素从 source 集合移动到 destination 集合。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b # 初始化集合
- (integer) 2
- 127.0.0.1:6379> smove s1 dest a # 移动集合
- (integer) 1
- 127.0.0.1:6379> smembers s1 # 查看集合元素
- 1) "b"
- 127.0.0.1:6379> smembers dest # 查看dest元素
- 1) "a"
- 127.0.0.1:6379> set name cxian
- OK
- 127.0.0.1:6379> smove s1 name b # 有非集合key报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(1)。
返回值:
SMEMBERS key:返回集合 key 中的所有成员。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b c d e
- (integer) 5
- 127.0.0.1:6379> smembers s1
- 1) "d"
- 2) "b"
- 3) "a"
- 4) "c"
- 5) "e"
- 127.0.0.1:6379> smembers s2
- (empty array)
- 127.0.0.1:6379> set name lisi
- OK
- 127.0.0.1:6379> smembers name
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N), N 为集合的基数。
返回值:
SRANDMEMBER key [count]:取指定数量count的元素。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b c
- (integer) 3
- 127.0.0.1:6379> srandmember s1
- "a"
- 127.0.0.1:6379> srandmember s1 2
- 1) "a"
- 2) "b"
- 127.0.0.1:6379> srandmember s1 5
- 1) "b"
- 2) "a"
- 3) "c"
- 127.0.0.1:6379> srandmember s1 -5
- 1) "a"
- 2) "c"
- 3) "a"
- 4) "c"
- 5) "c"
- 127.0.0.1:6379> set name lisi
- OK
- 127.0.0.1:6379> srandmember lisi
- (nil)
时间复杂度:
如果提供了 count 参数,那么为 O(N) ,N 为返回数组的元素个数。
返回值:
SISMEMBER key member:判断 member 元素是否集合 key 的成员。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b c # 初始化集合
- (integer) 3
- 127.0.0.1:6379> sismember s1 a # 查看是否存在
- (integer) 1
- 127.0.0.1:6379> sismember s1 f
- (integer) 0
- 127.0.0.1:6379> sismember s2 f # 不存在key似为空集合
- (integer) 0
- 127.0.0.1:6379> set name cxian
- OK
- 127.0.0.1:6379> sismember name f # 对非集合key操作,报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(1)。
返回值:
SUNION key [key ...]:返回一个集合的全部成员,该集合是所有给定集合的并集。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd myset a b # 初始化集合
- (integer) 2
- 127.0.0.1:6379> sadd myset2 a b c d # 初始化集合
- (integer) 4
- 127.0.0.1:6379> sunion myset myset2 myset3 # myset3不存在被似为空集合
- 1) "d"
- 2) "a"
- 3) "b"
- 4) "c"
- 127.0.0.1:6379> set name lisi
- OK
- 127.0.0.1:6379> sunion myset name # 有key存在且不为集合,报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N), N 是所有给定集合的成员数量之和。
返回值:
SUNIONSTORE destination key [key ...]:与SUNION操作相似。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b # 初始化集合
- (integer) 2
- 127.0.0.1:6379> sadd s2 c
- (integer) 1
- 127.0.0.1:6379> sunionstore dest s1 s2 s3 # 取并集
- (integer) 3
- 127.0.0.1:6379> smembers dest # 查看dest信息
- 1) "a"
- 2) "b"
- 3) "c"
- 127.0.0.1:6379> set name cxian
- OK
- 127.0.0.1:6379> sunionstore dest s1 s2 s3 name # 有非命令key报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N), N 是所有给定集合的成员数量之和。
返回值:
SINTER key [key ...]:返回所有给定集合的交集。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b c d e # 初始化集合
- (integer) 5
- 127.0.0.1:6379> sadd s2 b e f g # 初始化集合
- (integer) 4
- 127.0.0.1:6379> sinter s1 s2 # 取交集
- 1) "e"
- 2) "b"
- 127.0.0.1:6379> sinter s1 s2 s3 # 取交集,有不存在的key似为空集
- (empty array)
- 127.0.0.1:6379> set name lisi
- OK
- 127.0.0.1:6379> sinter s1 s2 name # 存在不为集合的key报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。
返回值:
SINTERSTORE destination key [key ...]:跟SINTER操作相似。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 a b d # 初始化集合
- (integer) 3
- 127.0.0.1:6379> sadd s2 d e f # 初始化集合
- (integer) 3
- 127.0.0.1:6379> sinterstore dest s1 s2
- (integer) 1
- 127.0.0.1:6379> smembers dest # 查看集合dest
- 1) "d"
- 127.0.0.1:6379> set name lisi
- OK
- 127.0.0.1:6379> sinterstore dest s1 s2 name # 存在不为集合的key
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。
返回值:
SDIFF key [key ...]:取给定集合之间的差集
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd myset a b c d e # 初始化几个集合key
- (integer) 5
- 127.0.0.1:6379> sadd myset2 d e
- (integer) 2
- 127.0.0.1:6379> sadd myset3 c d
- (integer) 2
- 127.0.0.1:6379> sdiff myset myset2 myset3 # 取三个集合的差集
- 1) "b"
- 2) "a"
- 127.0.0.1:6379> sdiff myset myset2 myset3 myset4 # 取4个集合的差集,其中一个不存在似为空集合
- 1) "b"
- 2) "a"
- 127.0.0.1:6379> set name lisi # 定义一个非集合key
- OK
- 127.0.0.1:6379> sdiff myset myset2 myset3 myset4 name # 有一个key不为集合
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N), N 是所有给定集合的成员数量之和。
返回值:
SDIFFSTORE destination key [key ...]:与SDIFF操作相拟。
- 127.0.0.1:6379> flushdb
- OK
- 127.0.0.1:6379> sadd s1 'baidu' 'google' 'alibaba' 'banana' # 初始化集合
- (integer) 4
- 127.0.0.1:6379> sadd s2 'apple' 'banana' 'orange' # 初始化集合
- (integer) 3
- 127.0.0.1:6379> sdiffstore dest s1 s2 # 求差集并保存到dest中
- (integer) 3
- 127.0.0.1:6379> smembers dest # 查看dest中元素
- 1) "baidu"
- 2) "google"
- 3) "alibaba"
- 127.0.0.1:6379> set name cxian
- OK
- 127.0.0.1:6379> sdiffstore dest s1 name # 存在不为集合的key报错
- (error) WRONGTYPE Operation against a key holding the wrong kind of value
时间复杂度O(N), N 是所有给定集合的成员数量之和。
返回值: