1. sadd key value.... 添加
- 添加一个或多个指定的member元素到集合的 key中. 指定的一个或者多个元素member
- 如果已经在集合key中存在则忽略.
- 如果集合key 不存在,则新建集合key,并添加member元素到集合key中.
- 如果key 的类型不是集合则返回错误. 返回新成功添加到集合里元素的数量,不包括已经存在于集合中的元素.
2.4: 接受多个member 参数. Redis 2.4 以前的版本每次只能添加一个member元素.
127.0.0.1:6379> sadd set key1 key2 key3
(integer) 3
127.0.0.1:6379> sadd set key1
(integer) 0
127.0.0.1:6379> smembers set
1) "key3"
2) "key1"
3) "key2"
127.0.0.1:6379>
2. smembers 返回key集合所有的元素
3. SISMEMBER key member 判断成员是否存在
返回成员 member 是否是存储的集合 key的成员.
- 如果member元素是集合key的成员,则返回1
- 如果member元素不是key的成员,或者集合key不存在,则返回0
127.0.0.1:6379> smembers set
1) "key3"
2) "key1"
3) "key2"
127.0.0.1:6379> sismember set key4
(integer) 0
127.0.0.1:6379> sismember set key3
(integer) 1
4. scard key 返回元素总数
返回集合存储的key的基数 (集合元素的数量).
返回值 integer-reply: 集合的基数(元素的数量),如果key不存在,则返回 0.
127.0.0.1:6379> scard set
(integer) 3
5.srem key member 移除指定元素
在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0.
如果key的类型不是一个集合,则返回错误.
返回值 integer-reply:从集合中移除元素的个数,不包括不存在的成员.
历史:= 2.4: 接受多个 member 元素参数. Redis 2.4 之前的版本每次只能移除一个元素.
127.0.0.1:6379> srem set key4
(integer) 0
127.0.0.1:6379> srem set key3
(integer) 1
127.0.0.1:6379> scard set
(integer) 2
127.0.0.1:6379> smembers set
1) "key1"
2) "key2"
6. spop key [count] 随机删除
从存储在key的集合中移除并返回一个或多个随机元素
count参数将在更高版本中提供,但是在2.6、2.8、3.0中不可用
如果count大于集合内部的元素数量,此命令将会返回整个集合,不会有额外的元素。
127.0.0.1:6379> spop set
"key2"
127.0.0.1:6379> spop set
"key3"
127.0.0.1:6379> spop set 3
1) "key1"
7. srandmember key [count] 随机返回元素
与spop相似但不移除 Redis 2.6开始,可以接受 count 参数。
- 如果count是整数且小于元素的个数,返回含有 count 个不同的元素的数组。
- 如果count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素
- 当count是负数,则会返回一个包含count的绝对值的个数元素的数组,
- 如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况.
当count参数的值为负数时,提取操作就像在每次提取后,重新将取出的元素放回包里一样,因此,可能返回重复的元素,以及总是会返回我们请求的数量的元素
127.0.0.1:6379> smembers set
1) "key3"
2) "key1"
3) "key2"
127.0.0.1:6379> srandmember set
"key2"
127.0.0.1:6379> srandmember set
"key1"
127.0.0.1:6379> srandmember set
"key3"
127.0.0.1:6379> srandmember set 2
1) "key1"
2) "key3"
127.0.0.1:6379> srandmember set 2
1) "key3"
2) "key2"
8. SMOVE source destination member 移动元素到另一个集合
将member从source集合移动到destination集合中
- 如果source 集合不存在或者不包含指定的元素,这smove命令不执行任何操作并且返回0.否则对象将会从source集合中移除,并添加到destination集合中去
- 如果destination集合已经存在该元素,则smove命令仅将该元素充source集合中移除.
- 如果source 和destination不是集合类型,则返回错误.
127.0.0.1:6379> smove set list key1
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> sadd set key1 key2 key3
(integer) 3
127.0.0.1:6379> sadd set2 key3
(integer) 1
127.0.0.1:6379> smove set set2 key3
(integer) 1
127.0.0.1:6379> smembers set
1) "key1"
2) "key2"
127.0.0.1:6379> smembers set2
1) "key3"
9. 并,差,交
- SUNION key [key ...] 返回给定的多个集合的并集中的所有成员.
- SDIFF key [key ...] 返回一个集合与给定集合的差集的元素.
- SINTER key [key ...] 返回指定所有的集合的成员的交集.
- SINTERSTORE destination key [key ...] 与SINTER命令类似, 将结果保存在 destination集合中.如果destination 集合存在, 则会被重写.
127.0.0.1:6379> sadd a 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sadd b 1 2 3 7 8 9
(integer) 6
127.0.0.1:6379> sunion a b
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
127.0.0.1:6379> sdiff a b
1) "4"
2) "5"
3) "6"
127.0.0.1:6379> sinter a b
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sinterstore c a b
(integer) 3
127.0.0.1:6379> smembers c
1) "1"
2) "2"
3) "3"
127.0.0.1:6379>