声明:学习笔记,有错希指正、
本篇将介绍redis中集合最常用的一些指令,插入,删除,移动元素到另一个集合,以及多个集合的交并差运算。
命令 | 操作 |
sadd | 加一个或者多个元素加入到集合里面,并返回被添加当中原本并不在集合里面的数量 |
srem | 移除一个或者多个元素,并返回移除的数量 |
sismember | 检查某个元素是否存在某个集合里面 |
scard | 返回集合里面元素的数量 |
smembers | 返回集合里面所有的元素 |
srandmember | 从集合里面随机返回一个或者多个元素 |
spop | 随机移除一个元素,返回随机移除的元素 |
smove | smove source-key dest-key item 如果集合source-key包含元素item,那么从集合source-key里面移除元素item,并添加到集合dest-key里面,如果移除成功移除,那么命令返回1,否则返回0 |
sdiff | sdiff key-name [key-name …] 返回那些存在于第一个集合,但不存在其他集合当中的元素(相当于差集运算) |
sdiffstore | sdiffstore store-key key1 [key… ] 将存在于第一个集合,但不存在其他集合当中的元素(相当于差集运算)找出来,并且存到dest-key里面,区别于上一步就是多了一个保存 |
sinter | 交集运算 |
sinterstore | 交集运算并存储 |
sunion | 并集运算 |
sunionstore | 并集运算并存储 |
--基本增删改操作
--增加多个元素
redis 127.0.0.1:6379> sadd set-key1 a b c d e
(integer) 5
redis 127.0.0.1:6379> smembers set-key1
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
--返回集合元素数量
redis 127.0.0.1:6379> scard set-key1
(integer) 5
--检查是否存在某元素
redis 127.0.0.1:6379> sismember set-key1 a
(integer) 1
--移除某元素
redis 127.0.0.1:6379> srem set-key1 a
(integer) 1
--移除后
redis 127.0.0.1:6379> smembers set-key1
1) "b"
2) "c"
3) "d"
4) "e"
--随机移除 第一个语法错误
redis 127.0.0.1:6379> spop b
(nil)
--直接spop某个键名 返回随机移除元素
redis 127.0.0.1:6379> spop set-key1
"c"
--创建第二个集合
redis 127.0.0.1:6379> sadd set-key2 dest
(integer) 1
--查询set-key1的元素
redis 127.0.0.1:6379> smembers set-key1
1) "d"
2) "e"
3) "b"
--移动set-key1的元素e到set-key2
redis 127.0.0.1:6379> smove set-key1 set-key2 e
(integer) 1
--查看移动后的结果
redis 127.0.0.1:6379> smembers set-key2
1) "dest"
2) "e"
--被移除集合无被移除元素 返回0
redis 127.0.0.1:6379> smove set-key1 set-key2 f
(integer) 0
--进行交并差运算
--set-key1初始化
redis 127.0.0.1:6379> sadd set-key1 a b c d e f
(integer) 4
--set-key2初始化
redis 127.0.0.1:6379> sadd set-key2 c f
(integer) 2
--查看set-key1
redis 127.0.0.1:6379> smembers set-key1
1) "c"
2) "d"
3) "e"
4) "f"
5) "a"
6) "b"
--查看set-key2
redis 127.0.0.1:6379> smembers set-key2
1) "c"
2) "dest"
3) "e"
4) "f"
--求差集
redis 127.0.0.1:6379> sdiff set-key1 set-key2
1) "d"
2) "a"
3) "b"
--将差的结果存到第三个集合set-key3里面
redis 127.0.0.1:6379> sdiffstore set-key3 set-key1 set-key2
(integer) 3
redis 127.0.0.1:6379> smembers set-key3
1) "d"
2) "a"
3) "b"
--下面不再展示并集和交集的运算,原理一模一样
命令为:
sinter 交集
sinterstore 交集存储
sunion 并集
sunion 并集存储
redis 127.0.0.1:6379>>