声明:学习笔记,有错希指正、
本篇将介绍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>>