Redis基本操作命令学习之四对Set(集合类型)数据操作命令

之前我们学习了redis的基础操作命令和对String、List的操作命令,今天作者在此记录以下学习到的关于Set的命令,起始Set命令和JAVA中的Set有部分相似之处,Set中的元素是无序的并且不能出现重复。

1.新增元素命令(SADD key value1 value2 …)

注意:一次可新增一个或多个元素 ; 返回值代表成功新增了几个元素,若返回值为0说明此元素在集合中已存在;

127.0.0.1:6379> sadd demoSet LiSi  // demoSet 为key名称
(integer) 1
127.0.0.1:6379> sadd demoSet WangWu MaLiu
(integer) 2
2.获取集合的成员总个数(SCARD key)
127.0.0.1:6379> scard demoSet
3
3.返回集合中的所有成员(SMEMBERS key)
127.0.0.1:6379> smembers demoSet // member(中文名:成员)
1) "MaLiu"
2) "WangWu"
3) "LiSi"
4.判断某个元素是否是集合 key 的成员(SISMEMBER key value)

注意:返回值为0表示,value不是set集合中的元素;返回值为1表示是set集合中的元素;

127.0.0.1:6379> sismember demoSet 666
(integer) 0
127.0.0.1:6379> sismember demoSet WangWu
(integer) 1
5.返回集合中一个或多个随机数(SRANDMEMBER key [count])
127.0.0.1:6379> srandmember demoSet
"WangWu"
127.0.0.1:6379> srandmember demoSet 2
1) "MaLiu"
2) "LiSi"
127.0.0.1:6379> srandmember demoSet 2
1) "LiSi"
2) "WangWu"
6.返回给定所有集合的交集(SINTER key1 key2 …)
127.0.0.1:6379> sadd demoSet2 GuGong TianAnMen ChangCheng ShuiLiFang NiaoChao
(integer) 5
127.0.0.1:6379> sadd demoSet3 ShuiLiFang NiaoChao
(integer) 2
127.0.0.1:6379> smembers demoSet
1) "MaLiu"
2) "WangWu"
3) "LiSi"
127.0.0.1:6379>sinter demoSet demoSet2 // 两个集合没有相同元素
(empty list or set)
127.0.0.1:6379> sinter demoSet3 demoSet2
1) "ShuiLiFang"
2) "NiaoChao"
127.0.0.1:6379> sinter demoSet3 demoSet2 demoSet
(empty list or set)
7.返回给定所有集合的交集并存储在result 中(SINTERSTORE RESULT key1 key2 …)

注意:RESULT 名称是自定义的

127.0.0.1:6379> sinterstore result demoSet3 demoSet2
2                          // 代表交集个数; 若没有交集则返回0
127.0.0.1:6379> smembers result
1) "ShuiLiFang"
2) "NiaoChao"
8.返回所有给定集合的并集(SUNION key1 key2 …)
127.0.0.1:6379> sunion demoSet demoSet2 demoSet3
1) "ShuiLiFang"
2) "WangWu"
3) "LiSi"
4) "NiaoChao"
5) "GuGong"
6) "MaLiu"
7) "ChangCheng"
8) "TianAnMen"
127.0.0.1:6379> sunion demoSet2 demoSet3
1) "NiaoChao"
2) "TianAnMen"
3) "ChangCheng"
4) "ShuiLiFang"
5) "GuGong"
127.0.0.1:6379> sunionstore result demoSet2 demoSet3 // 并集值存在result上
5              // 交集个数
127.0.0.1:6379 > smembers result
1) "NiaoChao"
2) "TianAnMen"
3) "ChangCheng"
4) "ShuiLiFang"
5) "GuGong"
9.返回集合key1与其他集合的差集(SDIFF key1 key2 …)

注意:也就是从key1中移除在key2、key3中同样存在的元素;

127.0.0.1:6379> sdiff demoSet demoSet2 // demoSet 与 demoSet2 没有相同的元素,则返回demoSet的全部元素
1) "MaLiu"
2) "LiSi"
3) "WangWu"
127.0.0.1:6379> sdiff demoSet2 demoSet3 // demoSet2 和 demoSet3 有两个重复的元素,则在demoSet2中把这两个重复的元素剔除掉后返回
1) "GuGong"
2) "ChangCheng"
3) "TianAnMen"
127.0.0.1:6379> sdiffstore result demoSet2 demoSet3 // 差集结果存在result上后返回
3
127.0.0.1:6379> smembers result
1) "GuGong"
2) "ChangCheng"
3) "TianAnMen"
10.移除并返回集合中的一个随机元素(SPOP key)
127.0.0.1:6379> spop demoSet
"XiaoHua"
127.0.0.1:6379> spop demoSet
"WangWu"
11.删除集合中一个或多个成员(SREM key value1 [value2 …])
127.0.0.1:6379> srem demoSet2 GuGong
1
127.0.0.1:6379> smembers demoSet2
1) "TianAnMen"
2) "ChangCheng"
3) "ShuiLiFang"
4) "NiaoChao"
12.将 member 元素从 source 集合移动到 destination 集合(SMOVE SOURCE DESTINATION MEMBER )
127.0.0.1:6379> smove demoSet demoSet2 MaLiu
(integer) 1
127.0.0.1:6379> smembers demoSet2
1) "TianAnMen"
2) "ChangCheng"
3) "ShuiLiFang"
4) "NiaoChao"
5) "MaLiu"

总结:SET命令:
新增: SADD、SMOVE(将指定元素从一个集合移到另一个集合中)
删除:SPOP(随机移除并返回一个元素)、SREM(删除指定的元素值)
查:SMEMBERS(获取全部元素)、SISMEMBER(判断某个元素是否在集合内)、SRANDMEMBER(随机返回一个或多个元素)
交并差集:SINTER(交集)、SINTERSTORE、SUNOIN(并集)、SUNOINSTORE、SDIFF(差集)、SDIFFSTORE
获取集合元素总个数:SCARD

你可能感兴趣的:(Redis)