0
点赞
收藏
分享

微信扫一扫

Redis教程07(Set集合介绍)

香小蕉 2022-07-01 阅读 64

上文介绍的list列表是有序集合,可以保存重复记录,在Redis中的Set集合是无序的,不可以存储重复记录的。本文主要介绍Set集合中的常用命令

Redis教程07(Set集合介绍)_List

Redis教程06(List类型命令介绍)

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令

说明

sadd

添加一个或多个元素到集合中,如果集合中存在该元素则忽略

scard

返回集合中的元素的个数

sismember

判断集合中是否含有某元素

smembers

获取集合中的所有的元素

srem

删除集合中指定的元素

srandmember

随机返回集合中的元素,版本2.6后在命令之后可以跟一个count。指定随机返回的元素个数

spop

和srandmember类似,只是spop会将获取的元素移除而srandmember不会移除元素

smove

将元素从一个集合移动到另一个集合中

sdiff

返回两个集合的差集

sdiffstore

和sdiff类似,不同的是会将差集结果保存起来

sinter

获取两个集合的交集

sinterstore

和sinter类似,不同的是将结果保存起来了

sunion

获取两个集合的并集

sunionstore

获取两个集合的并集并保存起来

SADD

添加一个或多个元素到集合中,如果集合中存在该元素则忽略

127.0.0.1:6379> sadd stu zhangsan lisi wangwu lisi zhangsan
(integer) 3

添加了5个元素,但只成功了3个,因为有两个是相同的。

SCard

返回set集合中元素的个数

127.0.0.1:6379> scard stu
(integer) 3

SIsMember

判断集合中是否含有某元素

127.0.0.1:6379> sismember stu zhangsan
(integer) 1 # 含有zhangsan
127.0.0.1:6379> sismember stu zhangsan1
(integer) 0 # 不含有zhangsan1

SMembers

获取集合中的所有的元素

127.0.0.1:6379> smembers stu
1) "lisi"
2) "zhangsan"
3) "wangwu"

SRem

删除集合中指定的元素,如果集合中不含有该元素,则忽略,返回0

127.0.0.1:6379> srem stu lisi
(integer) 1
127.0.0.1:6379> srem stu aa
(integer) 0 # 集合中不含有 aa 返回0
127.0.0.1:6379> smembers stu
1) "zhangsan"
2) "wangwu"

SRandMember

随机返回集合中的元素,redis2.6之后可以在命令后加一个count参数,指定随机返回的元素的个数,如果count大于集合中的个数,则返回所有的元素。负数的话取绝对值

127.0.0.1:6379> srandmember stu
"zhangsan" # 取一个随机值
127.0.0.1:6379> srandmember stu
"bobo"
127.0.0.1:6379> srandmember stu
"dpb"
127.0.0.1:6379> srandmember stu 3
1) "bobo" #取三个随机值
2) "dpb"
3) "wangwu"
127.0.0.1:6379> srandmember stu 3
1) "bobo"
2) "dpb"
3) "lisi"
127.0.0.1:6379> srandmember stu 100
1) "lisi" # 大于总的个数,去所有值
2) "dpb"
3) "bobo"
4) "zhangsan"
5) "wangwu"
127.0.0.1:6379> srandmember stu -2
1) "dpb" # 负数取绝对值 两个
2) "zhangsan"
127.0.0.1:6379> srandmember stu -2
1) "lisi"
2) "dpb"

Spop

和srandmember类似,只是spop会将获取的元素移除而srandmember不会移除元素|

127.0.0.1:6379> smembers stu
1) "bobo"
2) "zhangsan"
3) "dpb"
4) "lisi"
5) "wangwu"
127.0.0.1:6379> spop stu 2
1) "zhangsan" # 随机获取两个元素并移除
2) "dpb"
127.0.0.1:6379> smembers stu
1) "bobo"
2) "lisi"
3) "wangwu"

SMove

将元素从一个集合移动到另一个集合中

127.0.0.1:6379> smembers stu
1) "bobo"
2) "lisi"
3) "wangwu"
127.0.0.1:6379>
127.0.0.1:6379> smove stu stu1 bobo
(integer) 1
127.0.0.1:6379> smembers stu
1) "lisi"
2) "wangwu"
127.0.0.1:6379> smembers stu1
1) "bobo"

SDiff

返回两个集合的差集

127.0.0.1:6379> smembers stu
1) "lisi"
2) "wangwu"
127.0.0.1:6379> smembers stu1
1) "bobo"
127.0.0.1:6379> sdiff stu stu1
1) "lisi"
2) "wangwu"
127.0.0.1:6379> sdiff stu1 stu
1) "bobo"

SDiffStore

和sdiff类似,不同的是会将差集结果保存起来

127.0.0.1:6379> sdiffstore stu2 stu1 stu
(integer) 1
127.0.0.1:6379> smembers stu2
1) "bobo"

SInter

获取两个集合的交集

127.0.0.1:6379> smembers stu
1) "lisi"
2) "wangwu"
127.0.0.1:6379> smembers stu2
1) "lisi"
2) "bobo"
127.0.0.1:6379> sinter stu stu2
1) "lisi" #两个集合中都有lisi

SInterStore

获取两个集合的交接并将结果保存起来了。

127.0.0.1:6379> sinterstore stu3 stu stu2
(integer) 1
127.0.0.1:6379> smembers stu3
1) "lisi"

SUnion

获取两个集合的并集。

127.0.0.1:6379> sunion stu stu2
1) "bobo"
2) "lisi"
3) "wangwu"

SunionStore

获取两个集合的并集并保存起来

127.0.0.1:6379> sunionstore stu3 stu stu2
(integer) 3
127.0.0.1:6379> smembers stu3
1) "bobo"
2) "lisi"
3) "wangwu"

~好了本文到此为止
​​​更多资料欢迎参考官网手册​​


举报

相关推荐

0 条评论