Redis
的
set
集合内部的键值对是无序的唯一的。它的内部实现相当于一个特殊的字典,字典中所有的
value
都是一个值
NULL
。当集合中最后一个元素移除之后,数据结构自动删除,内存被回收。
set
结构可以用来存储活动中奖的用户
ID
,因为有去重功能,可以保证同一个用户不会中奖两次。
1. set 类型相关命令
命令 | 说明 |
---|---|
sadd key member | 添加一个string元素到key对应的set集合中 |
scard key | 返回set的元素个数 |
sismember key member | 判断member是否在set中 |
srem key member | 从key对应set中移除给定元素 |
smembers key | 返回key对应set的所有元素,结果是无序的 |
spop key[count] | 删除并取得一个集合里面的元素 |
srandmember key [count] | 从集合中随机获取一个key |
smove p1 p2 member | 从p1对应set中移除给定元素并添加到p2对应set中 |
sinter key p1 p2…pN | 返回所有给定key的交集 |
sunion key p1 p2…pN | 返回所有给定key的并集 |
sdiff key p1 p2…pN | 返回所有给定key 的差集 |
sinterstore destination key [key….] | 获取两个集合的交集,并存储在一个关键的结果集 |
sunionstore destination key [key…] | 合并set集合,并将结果存入新的set里面 |
sdifferstore destination key[key…] | 获取队列的差集,并存储在一个新的结果集 |
smove source destination member | 移动集合里的一个key到另一个集合 |
2. set 类型 使用示例
127.0.0.1:6379> sadd set "east"
(integer) 1
127.0.0.1:6379> sadd set "west"
(integer) 1
127.0.0.1:6379> sadd set "south"
(integer) 1
127.0.0.1:6379> sadd set "north"
(integer) 1
127.0.0.1:6379> scard set
(integer) 4
127.0.0.1:6379> sismember set "middle"
(integer) 0
127.0.0.1:6379> sismember set "south"
(integer) 1
127.0.0.1:6379> sadd set "middle"
(integer) 1
127.0.0.1:6379> scard set
(integer) 5
127.0.0.1:6379> smembers set # 注意顺序,和插入的并不一致,因为 set 是无序的
1) "east"
2) "south"
3) "north"
4) "west"
5) "middle"
127.0.0.1:6379> spop set
"middle"
127.0.0.1:6379> srandmember set
"east"
127.0.0.1:6379> srandmember set
"east"
127.0.0.1:6379> srandmember set
"west"
127.0.0.1:6379> scard set
(integer) 4
127.0.0.1:6379> sadd set_a 1
(integer) 1
127.0.0.1:6379> sadd set_a 2
(integer) 1
127.0.0.1:6379> sadd set_a 3
(integer) 1
127.0.0.1:6379> sadd set_b 2
(integer) 1
127.0.0.1:6379> sadd set_b 3
(integer) 1
127.0.0.1:6379> sadd set_b 4
(integer) 1
127.0.0.1:6379> smove set set_a east
(integer) 1
127.0.0.1:6379> smembers set_a
1) "east"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> sinter set_a set_b
1) "2"
2) "3"
127.0.0.1:6379> sunion set_a set_b
1) "2"
2) "4"
3) "east"
4) "3"
5) "1"
127.0.0.1:6379> sdiff set_a set_b
1) "east"
2) "1"
127.0.0.1:6379> smove set set_a
(error) ERR wrong number of arguments for 'smove' command
127.0.0.1:6379> smove set set_a west
(integer) 1
127.0.0.1:6379> smembers set_a
1) "east"
2) "3"
3) "2"
4) "1"
5) "west"
127.0.0.1:6379>
版权声明:本文为wohu1104原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。