之前我们学习了redis的基础操作命令和对String、List的操作命令,今天作者在此记录以下学习到的关于Set的命令,起始Set命令和JAVA中的Set有部分相似之处,Set中的元素是无序的并且不能出现重复。
注意:一次可新增一个或多个元素 ; 返回值代表成功新增了几个元素,若返回值为0说明此元素在集合中已存在;
127.0.0.1:6379> sadd demoSet LiSi // demoSet 为key名称
(integer) 1
127.0.0.1:6379> sadd demoSet WangWu MaLiu
(integer) 2
127.0.0.1:6379> scard demoSet
3
127.0.0.1:6379> smembers demoSet // member(中文名:成员)
1) "MaLiu"
2) "WangWu"
3) "LiSi"
注意:返回值为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
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"
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)
注意:RESULT 名称是自定义的
127.0.0.1:6379> sinterstore result demoSet3 demoSet2
2 // 代表交集个数; 若没有交集则返回0
127.0.0.1:6379> smembers result
1) "ShuiLiFang"
2) "NiaoChao"
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"
注意:也就是从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"
127.0.0.1:6379> spop demoSet
"XiaoHua"
127.0.0.1:6379> spop demoSet
"WangWu"
127.0.0.1:6379> srem demoSet2 GuGong
1
127.0.0.1:6379> smembers demoSet2
1) "TianAnMen"
2) "ChangCheng"
3) "ShuiLiFang"
4) "NiaoChao"
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