7、Redis五大数据类型---集合(Set)
2021/11/15 19:13:57
本文主要是介绍7、Redis五大数据类型---集合(Set),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、集合(Set)简介
- Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
- Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
- 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
二、常用命令
1、sadd sadd <key><value1><value2>
将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> sadd myset a b c d #往myset集合了添加值 (integer) 4 #返回4 127.0.0.1:6379> sadd myset a b c d #往myset集合了添加重复值 (integer) 0 #返回0 127.0.0.1:6379>
2、smembers smembers <key>
取出该集合的所有值。
127.0.0.1:6379> keys * 1) "myset" 127.0.0.1:6379> smembers myset #取出myset集合中所有的值 1) "c" 2) "d" 3) "b" 4) "a" 127.0.0.1:6379>
3、sismember sismember <key><value>
判断集合是否为含有该值,有1,没有0
127.0.0.1:6379> keys * 1) "myset" 127.0.0.1:6379> smembers myset #查看当前集合中所有的值 1) "c" 2) "d" 3) "b" 4) "a" 127.0.0.1:6379> sismember myset d #判断当前集合是否存在d,存在返回1 (integer) 1 127.0.0.1:6379> sismember myset h #判断当前集合是否存在h,不存在返回0 (integer) 0 127.0.0.1:6379>
4、scard scard <key>
返回该集合的元素个数。
127.0.0.1:6379> keys * 1) "myset" 127.0.0.1:6379> smembers myset #查看当前集合元素个数 1) "c" 2) "d" 3) "b" 4) "a" 127.0.0.1:6379> scard myset (integer) 4
5、srem srem <key><value1><value2> ....
删除集合中的某个元素。
127.0.0.1:6379> keys * 1) "myset" 127.0.0.1:6379> smembers myset 1) "c" 2) "d" 3) "b" 4) "a" 127.0.0.1:6379> srem myset b #移除集合中存在的值 (integer) 1 127.0.0.1:6379> srem myset h #移除集合中不存在的值。返回0 (integer) 0 127.0.0.1:6379>
6、spop spop <key>
随机从该集合中吐出一个值。
127.0.0.1:6379> keys * 1) "myset" 127.0.0.1:6379> smembers myset 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> spop myset 1 #在当前集合随机弹出一个值 1) "c" 127.0.0.1:6379> spop myset 2 #再当前集合随机弹出两个值 1) "a" 2) "b" 127.0.0.1:6379> smembers myset #查看当前集合剩余的值 1) "d"
7、srandmember srandmember <key><n>
随机从该集合中取出n个值。不会从集合中删除 。
127.0.0.1:6379> keys * 1) "myset" 127.0.0.1:6379> smembers myset 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> srandmember myset 2 #随机在集合中去取出2个值 1) "b" 2) "a" 127.0.0.1:6379> smembers myset #查看值是否被删除 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379>
8、smove smove <source> <destination> value
把集合中一个值从一个集合移动到另一个集合
127.0.0.1:6379> sadd source a b c d #在source里添加值 (integer) 4 127.0.0.1:6379> sadd destination 1 2 3 4 #在目标destination添加值 (integer) 4 127.0.0.1:6379> smembers source 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> smembers destination 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379> smove source destination a #将source里面的a移动到destination集合里 (integer) 1 127.0.0.1:6379> smembers source #查看source集合 1) "d" 2) "c" 3) "b" 127.0.0.1:6379> smembers destination #查看destination集合里的元素 1) "4" 2) "3" 3) "2" 4) "1" 5) "a" 127.0.0.1:6379>
9、sinter sinter <key1><key2>
返回两个集合的交集元素。
127.0.0.1:6379> sadd k1 1 2 3 a b c (integer) 6 127.0.0.1:6379> sadd k2 a b c 4 5 6 (integer) 6 127.0.0.1:6379> smembers k1 1) "a" 2) "1" 3) "3" 4) "c" 5) "b" 6) "2" 127.0.0.1:6379> smembers k2 1) "4" 2) "b" 3) "a" 4) "6" 5) "c" 6) "5" 127.0.0.1:6379> sinter k1 k2 #返回两个集合公共的元素 1) "a" 2) "c" 3) "b"
10、sunion sunion <key1><key2>
返回两个集合的并集元素。
127.0.0.1:6379> sadd k1 1 2 3 a b c (integer) 6 127.0.0.1:6379> sadd k2 a b c 4 5 6 (integer) 6 127.0.0.1:6379> smembers k1 1) "a" 2) "1" 3) "3" 4) "c" 5) "b" 6) "2" 127.0.0.1:6379> smembers k2 1) "4" 2) "b" 3) "a" 4) "6" 5) "c" 6) "5" 127.0.0.1:6379> sunion k1 k2 #k1与k2的并集 1) "c" 2) "4" 3) "b" 4) "2" 5) "a" 6) "1" 7) "6" 8) "5" 9) "3"
11、 sdiff sdiff <key1><key2>
返回两个集合的差集元素(key1中的,不包含key2中的)
127.0.0.1:6379> sadd k1 1 2 3 a b c (integer) 6 127.0.0.1:6379> sadd k2 a b c 4 5 6 (integer) 6 127.0.0.1:6379> smembers k1 1) "a" 2) "1" 3) "3" 4) "c" 5) "b" 6) "2" 127.0.0.1:6379> smembers k2 1) "4" 2) "b" 3) "a" 4) "6" 5) "c" 6) "5" 127.0.0.1:6379> sdiff k1 k2 #返回k1集合与k2集合的差集(用k1集合减去k1与k2的交集) 1) "1" 2) "2" 3) "3"
三、总结
- Redis 的集合相当于 Java 语言里面的 HashSet,它内部的键值对是无序的唯一的。它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL。
- 当集合中最后一个元素移除之后,数据结构自动删除,内存被回收。set 结构可以用来存储活动中奖的用户 ID,因为有去重功能,可以保证同一个用户不会中奖两次。
- set有交集、并集和补集,可以实现好友像好友推荐功能。
- list集合不具有唯一性,set是不重复的,保证唯一性。
这篇关于7、Redis五大数据类型---集合(Set)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27阿里云Redis学习入门指南
- 2024-12-27阿里云Redis入门详解:轻松搭建与管理
- 2024-12-27阿里云Redis学习:新手入门指南
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程