Set与List概念上类似,最大的差异在於Set是无顺序且key不能重覆。
可用指令
资料结构
在Set key中加入member.
127.0.0.1:6379> sadd books abc def
(integer) 2
取得Set key中所有的member.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
随机取得Set key中的member数.
# 加入四个member到books key中
127.0.0.1:6379> sadd books abc def ghi jkl
(integer) 4
# 取得books key中所有的member
127.0.0.1:6379> smembers books
1) "ghi"
2) "def"
3) "abc"
4) "jkl"
# 随机取得books key中的任两个member
127.0.0.1:6379> srandmember books 2
1) "def"
2) "jkl"
# 随机取得books key中的任两个member
127.0.0.1:6379> srandmember books 2
1) "def"
2) "jkl"
# 随机取得books key中的任两个member (不同)
127.0.0.1:6379> srandmember books 2
1) "abc"
2) "def"
删除Set key中的特定member.
127.0.0.1:6379> sadd books abc def ghi jkl
(integer) 4
# 移除books key中的member abc
127.0.0.1:6379> srem books abc
(integer) 1
# 移除books key中的member abc,不存在此member,所以失败
127.0.0.1:6379> srem books abc
(integer) 0
127.0.0.1:6379> smembers books
1) "ghi"
2) "def"
3) "jkl"
删除Set key中的随机member数.
127.0.0.1:6379> sadd books abc def ghi jkl
(integer) 4
# 随机删除2个books中的member
127.0.0.1:6379> spop books 2
1) "jkl"
2) "ghi"
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
# 随机删除1个books中的member
127.0.0.1:6379> spop books 1
1) "def"
127.0.0.1:6379> smembers books
1) "abc"
取得多个key中member的联集.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
127.0.0.1:6379> sinter books books2
1) "def"
取得多个key中member的交集.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
127.0.0.1:6379> sunion books books2
1) "def"
2) "abc"
3) "ghi"
4) "jkl"
取得多个key中member的差集
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
# 注意前後key的摆放会影响差集结果
127.0.0.1:6379> sdiff books books2
1) "abc"
# 注意前後key的摆放会影响差集结果
127.0.0.1:6379> sdiff books2 books
1) "ghi"
2) "jkl"
判断key中的member是否有符合指定的member.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
# 判断member abc是否有在books key的member中 (有)
127.0.0.1:6379> sismember books abc
(integer) 1
# 判断member ghi是否有在books key的member中 (没有)
127.0.0.1:6379> sismember books ghi
(integer) 0
将某key中的指定member移至目的端key的member中.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
# 从books2 key中移动jkl member到books key中
127.0.0.1:6379> smove books2 books jkl
(integer) 1
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
3) "jkl"
127.0.0.1:6379> smembers books2
1) "def"
2) "ghi"
取得key中member的总数.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
# books key中有2个member
127.0.0.1:6379> scard books
(integer) 2
# books key中有3个member
127.0.0.1:6379> scard books2
(integer) 3
# 此nobody key不存在,回传0
127.0.0.1:6379> scard nobody
(integer) 0
扫描key中指定member 特定match pattern与次数.
# 取得1个存在books key中member为a开头
127.0.0.1:6379> sscan books 0 match a* 1
1) "0"
2) 1) "abc"
# 取得1个存在books key中member为b开头
127.0.0.1:6379> sscan books 0 match b* 1
1) "0"
2) (empty array)
取得多个key中member的联集,并存入另外一个key中.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
127.0.0.1:6379> sinterstore books books2
1) "def"
# 将books key与books2 key中的member联集写入到newbooks key中
127.0.0.1:6379> sinterstore newbooks books books2
(integer) 1
127.0.0.1:6379> smembers newbooks
1) "def"
取得多个key中member的交集,并存入另外一个key中.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
# 将books key与books2 key中的member交集写入到newbooks2 key中
127.0.0.1:6379> sunionstore newbooks2 books books2
(integer) 4
127.0.0.1:6379> smembers newbooks2
1) "def"
2) "abc"
3) "ghi"
4) "jkl"
取得多个key中member的差集,并存入另外一个key中.
127.0.0.1:6379> sadd books abc def
(integer) 2
127.0.0.1:6379> sadd books2 def ghi jkl
(integer) 3
127.0.0.1:6379> smembers books
1) "def"
2) "abc"
127.0.0.1:6379> smembers books2
1) "def"
2) "jkl"
3) "ghi"
# 将books key与books2 key的member差集写入newbooks3 key中
127.0.0.1:6379> sdiffstore newbooks3 books books2
(integer) 1
127.0.0.1:6379> smembers newbooks3
1) "abc"
# 将books2 key与books key的member差集写入newbooks4 key中
127.0.0.1:6379> sdiffstore newbooks4 books2 books
(integer) 2
127.0.0.1:6379> smembers newbooks4
1) "ghi"
2) "jkl"
>>: 每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day15
前言 我们昨天聊到要透过解析 threadPool 档案中的 FinishContinuations...
在写 C 语言时 char *week[] = { "Friday", &quo...
T0826 Loss of Availability 攻击者尝试破坏工控设备重要的系统或元件,阻止工...
一日客语:中文:加油 客语:gaˊ iuˇ 嘎2声U Array:是物件只是做了小调整变成阵列 特性...
Laravel Sail 是 Laravel 8 的新功能,你可以透过 sail 指令来操作内建的 ...