【redis实战】Redis命令之集合

Redis的集合以无序的方式存储多个各不相同的元素,用户可以快速对集合执行添加元素、移除元素以及检查元素是否存在于集合中的操作。

常用命令

命令用例描述注意
saddsadd key item[item …]将一个或多个元素插入到集合中,并返回被添加元素当中原本不存在于集合中的数量
sremsrem key item[item …]从集合中移除一个或多个元素,并返回移除元素的个数
sismembersisrember key item检查元素是否存在,存在为1,不存在为0
smemberssmembers key返回集合中所有的元素
scardscard key返回集合中的元素个数
srandmembersrandmember key [count]返回集合中随机的一个或多个元素,如果count>0则返回元素不会重复,否则可能会重复
spopspop key随机弹出一个元素,并返回被移除的元素
smovesmove source-key dest-key item如果source集合包含元素item,则将item从source移除并添加到dest集合中,如果item成功移除则返回1,否则返回0

添加元素 sadd

插入1和2,并返回2,说明插入成功了2个元素

127.0.0.1:6379> sadd set1 1 2
(integer) 2

再次插入元素1,返回0,说明集合中已经有元素1了

127.0.0.1:6379> sadd set1 1
(integer) 0

移除元素 srem

移除集合中存在的元素

127.0.0.1:6379> srem set1 1
(integer) 1

移除集合中不存在的元素

127.0.0.1:6379> srem set1 1
(integer) 0

移除集合中的多个元素

127.0.0.1:6379> srem set1 1 2 3
(integer) 1

返回的值为移除成功元素的个数

检查元素是否存在

127.0.0.1:6379> sadd set1 1 2 3 4
(integer) 4

127.0.0.1:6379> sismember set1 1
(integer) 1

查询集合中的所有元素

127.0.0.1:6379> smembers set1
1) "1"
2) "2"
3) "3"
4) "4"

查询集合中的元素个数

127.0.0.1:6379> scard set1
(integer) 4

随机返回元素 srandmemeber

127.0.0.1:6379> srandmember set1
"2"
127.0.0.1:6379> srandmember set 10
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> srandmember set -10
 1) "2"
 2) "2"
 3) "2"
 4) "3"
 5) "4"
 6) "3"
 7) "1"
 8) "4"
 9) "4"
10) "2"

随机移除一个元素

127.0.0.1:6379> spop set1
"2"

转移元素

转移存在的

127.0.0.1:6379> smove set1 set2 1
(integer) 1

转移不存在的

127.0.0.1:6379> smove set1 set2 10
(integer) 0

高级命令:组合和关联

用于组合和处理多个集合的命令,集合真正厉害的地方在组合和关联多个集合。

命令用例描述注意
sdiffsdiff key [key …]返回那些存在于第一个集合但不存在于其他集合中的元素(数学上的差级运算)
sdiffstoresdiffstore dest-key key [key …]将sdiff的结果存到dest集合中
sintersinter key [key …]返回多个集合的都有的元素(数学中的交集运算)
sinterstoresinterstore dest-key key [key …]将sinter的结果存储到dest集合中
sunionsunion key [key …]返回多个集合中的所有元素(数学中的并集)
sunionstoresunion dest-key key [key …]将sunion的结果存储到dest集合中

sdiff 差集

查看两个集合的元素

127.0.0.1:6379> smembers set
1) "1"
2) "3"
3) "4"
127.0.0.1:6379> smembers set2
1) "1"

sdiff的结果:只返回第一个集合中有,但其他集合中没有的元素

127.0.0.1:6379> sdiff set1 set2
1) "3"
2) "4"
127.0.0.1:6379> sdiff set2 set1
(empty list or set)

sdiffstore 差集存储

# set1 和set2 的差集
127.0.0.1:6379> sdiff set1 set2
1) "3"
2) "4"

# set3 中是空的
127.0.0.1:6379> smembers set3
(empty list or set)

# 执行sdiffstore,返回影响的元素数
127.0.0.1:6379> sdiffstore set3 set set2
(integer) 2

# set3 中成功添加了set1和set2的差集
127.0.0.1:6379> smembers set3
1) "3"
2) "4"

sinter 交集

127.0.0.1:6379> smembers set1
1) "1"
2) "3"
3) "4"
127.0.0.1:6379> smembers set2
1) "1"

# set1 和set2 的交集
127.0.0.1:6379> sinter set1 set2
1) "1"

sinterstore 交集存储

127.0.0.1:6379> smembers set4
(empty list or set)

127.0.0.1:6379> sinterstore set4 set set2
(integer) 1
127.0.0.1:6379> smembers set4
1) "1"

sunion 并集

127.0.0.1:6379> sunion set1 set2
1) "1"
2) "3"
3) "4"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值