Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)

  • Post author:
  • Post category:其他



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 版权协议,转载请附上原文出处链接和本声明。