Redis(六)—— Set 集合类型详解
2021/8/7 19:07:58
本文主要是介绍Redis(六)—— Set 集合类型详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Set(集合)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合对象的编码可以是 intset 或者 hashtable。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。
使用实例
设置集合的值:sadd
#================================================================ 127.0.0.1:6379> sadd myset world (integer) 1 127.0.0.1:6379> sadd myset hello (integer) 1 127.0.0.1:6379> sadd myset hello #重复添加则失败 (integer) 0
查看集合的所有值:smembers,为1存在,为0不存在
#================================================================ 127.0.0.1:6379> smembers myset 1) "world" 2) "hello"
判断某个值是否在集合中:sismember,为1存在,为0不存在
#================================================================ 127.0.0.1:6379> sismember myset hello (integer) 1 #存在 127.0.0.1:6379> sismember myset hi (integer) 0 #不存在
查看集合中值的个数:scard
#================================================================ 127.0.0.1:6379> scard myset (integer) 2
移除集合中的指定值:srem
#================================================================ 127.0.0.1:6379> smembers myset 1) "hi" 2) "world" 3) "hello" 127.0.0.1:6379> srem myset hi (integer) 1 127.0.0.1:6379> smembers myset 1) "world" 2) "hello"
随机移除集合中的值:spop
#================================================================ 127.0.0.1:6379> smembers myset #查看集合中所有值 1) "wan" 2) "world" 3) "hello" 4) "li" 127.0.0.1:6379> spop myset 1 #随机移除myset集合中的一个值 1) "wan" 127.0.0.1:6379> smembers myset 1) "world" 2) "hello" 3) "li" 127.0.0.1:6379> spop myset 2 #随机移除myset集合中的两个值 1) "world" 2) "li" 127.0.0.1:6379> smembers myset #myset集合中值的剩余情况 1) "hello"
从集合中随机抽取元素,但不移除:srandmember
#================================================================ 127.0.0.1:6379> sadd myset hello1 (integer) 1 127.0.0.1:6379> sadd myset hello2 (integer) 1 127.0.0.1:6379> sadd myset hello3 (integer) 1 127.0.0.1:6379> sadd myset hello4 (integer) 1 127.0.0.1:6379> sadd myset hello5 (integer) 1 127.0.0.1:6379> sadd myset hello6 (integer) 1 127.0.0.1:6379> sadd myset hello7 (integer) 1 127.0.0.1:6379> sadd myset hello8 (integer) 1 127.0.0.1:6379> sadd myset hello9 (integer) 1 127.0.0.1:6379> smembers myset 1) "hello7" 2) "hello5" 3) "hello3" 4) "hello4" 5) "hello6" 6) "hello1" 7) "hello8" 8) "hello2" 9) "hello9" 127.0.0.1:6379> srandmember myset #从myset集合中随机抽取一个元素 "hello6" 127.0.0.1:6379> srandmember myset "hello3" 127.0.0.1:6379> srandmember myset "hello9" 127.0.0.1:6379> srandmember myset "hello3" 127.0.0.1:6379> srandmember myset 2 #从myset集合中随机抽取两个元素 1) "hello7" 2) "hello8" 127.0.0.1:6379> srandmember myset 2 1) "hello5" 2) "hello2" 127.0.0.1:6379> srandmember myset 2 1) "hello6" 2) "hello9" 127.0.0.1:6379> srandmember myset 2 1) "hello3" 2) "hello8"
移动一个集合中的指定元素到另一个集合中:smove
#================================================================ 127.0.0.1:6379> sadd myset1 hello1 (integer) 1 127.0.0.1:6379> sadd myset2 hello2 (integer) 1 127.0.0.1:6379> smove myset1 myset2 hello1 #移动myset1集合中的hello1元素到myset2集合中 (integer) 1 127.0.0.1:6379> smembers myset2 1) "hello1" 2) "hello2" 127.0.0.1:6379> smembers myset1 (empty array)
两个集合的差集(sdiff)和并集(sunion)和交集(sinter)
#================================================================ 127.0.0.1:6379> sadd set1 a (integer) 1 127.0.0.1:6379> sadd set1 b (integer) 1 127.0.0.1:6379> sadd set1 c (integer) 1 127.0.0.1:6379> sadd set2 c (integer) 1 127.0.0.1:6379> sadd set2 d (integer) 1 127.0.0.1:6379> sadd set2 e (integer) 1 #==============================差集================================== #集合set1中独有的元素 127.0.0.1:6379> sdiff set1 set2 1) "b" 2) "a" #集合set2中独有的元素 127.0.0.1:6379> sdiff set2 set1 1) "e" 2) "d" #==============================两个集合的并集================================== 127.0.0.1:6379> sunion set1 set2 1) "a" 2) "c" 3) "b" 4) "e" 5) "d" 127.0.0.1:6379> sunion set2 set1 1) "d" 2) "c" 3) "e" 4) "b" 5) "a" #==============================两个集合的交集================================== 127.0.0.1:6379> sinter set1 set2 1) "c"
更多命令请参考:https://redis.io/commands
这篇关于Redis(六)—— Set 集合类型详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-26阿里云Redis项目实战:新手入门教程
- 2024-09-26阿里云Redis资料入门教程
- 2024-09-25阿里云Redis入门教程:快速掌握Redis的基本操作
- 2024-09-25阿里云Redis学习:新手入门教程
- 2024-09-21Redis资料入门教程:轻松掌握Redis基础知识
- 2024-09-21Redis资料:入门级用户必学教程
- 2024-09-21Redis资料:新手入门教程与实践指南
- 2024-09-20Redis教程:从入门到实践的全面指南
- 2024-09-20Redis教程:初学者快速入门指南
- 2024-09-20Redis教程:新手入门与实践指南