文章目录
一、Set 集合数据
Redis 的 Set 集合数据,与 List 列表功能相似,唯一的区别是 Set 集合中的元素 是 不允许重复的 ;
该 Set 集合 是一个 无序集合,存储 String 类型数据 ;
Set 集合底层是由 Hash 表实现 的,本质是 字典结构,其 添加,删除,查找 元素的 时间复杂度 是 O(1) ;
Java 的 HashSet 集合 内部由 HashMap 实现,所有的 值 Value 都指向同一个实例对象 ;
Redis 的 Set 集合 内部也是由 Hash 实现,所有的 值 Value 都指向同一个值 ;
二、查询操作
1、获取集合的所有值
执行
smembers key
命令,可以 获取 集合的 所有值 ;
代码示例 :
127.0.0.1:6379> sadd name Tom Jerry Jack
(integer) 3
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379>
2、判断键是否包含值
执行
sismember key value
命令,可以 判断 key 键中 是否存在 value 值 ;
代码示例 : 查询 Tom 存在 返回 1,查询 Bill 不存在 返回 0 ;
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> sismember name Tom
(integer) 1
127.0.0.1:6379> sismember name Bill
(integer) 0
127.0.0.1:6379>
3、获取集合元素个数
执行
scard key
命令,可以 获取集合元素个数 ;
代码示例 : 获取集合的元素个数为 3 ;
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> sismember name Tom
(integer) 1
127.0.0.1:6379> sismember name Bill
(integer) 0
127.0.0.1:6379> scard name
(integer) 3
127.0.0.1:6379>
4、随机获取若干元素
执行
srandmember key n
命令,可以 从 Set 集合中 随机获取 n 个元素
代码示例 :
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> srandmember name 2
1) "Jerry"
2) "Jack"
127.0.0.1:6379> srandmember name 2
1) "Jerry"
2) "Jack"
127.0.0.1:6379>
5、获取两个集合的交集
执行
sinter key1 key2
命令,可以 获取两个集合的交集 ;
代码示例 :
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> smembers age
1) "Tom"
2) "22"
3) "18"
4) "16"
127.0.0.1:6379> sinter name age
1) "Tom"
127.0.0.1:6379>
6、获取两个集合的并集
执行
sunion key1 key2
命令,可以 获取两个集合的并集 ;
代码示例 :
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> smembers age
1) "Tom"
2) "22"
3) "18"
4) "16"
127.0.0.1:6379> sinter name age
1) "Tom"
127.0.0.1:6379> sunion name age
1) "22"
2) "Tom"
3) "Jack"
4) "16"
5) "Jerry"
6) "18"
127.0.0.1:6379>
7、获取两个集合的差集
执行
sdiff key1 key2
命令,可以 获取两个集合的差集,在 key1 中存在,key2 中不存在的 ;
代码示例 :
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> smembers age
1) "Tom"
2) "22"
3) "18"
4) "16"
127.0.0.1:6379> sinter name age
1) "Tom"
127.0.0.1:6379> sunion name age
1) "22"
2) "Tom"
3) "Jack"
4) "16"
5) "Jerry"
6) "18"
127.0.0.1:6379> sdiff name age
1) "Jerry"
2) "Jack"
127.0.0.1:6379>
三、增操作
1、插入值
执行
sadd key value1 value2 ...
命令,向 key 键存储多个值 ; 如果插入重复的元素,重复的元素会被忽略,其它没有重复的元素则成功插入 ;
代码示例 :
127.0.0.1:6379> sadd name Tom Jerry Jack
(integer) 3
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379>
四、删操作
1、删除元素
执行
srem key value1 value2
命令,可以 删除 集合 中的某些元素 ;
代码示例 : 删除集合中的 2 个元素 ;
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> srem name Tom Jerry
(integer) 2
127.0.0.1:6379> smembers name
1) "Jack"
127.0.0.1:6379>
2、删除列表指定个数的指定值
执行
spop key
命令,可以 随机从集合中获取某个值,该值会在集合中删除 ;
代码示例 :
127.0.0.1:6379> sadd name Tom Jerry Jack
(integer) 2
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> spop name
"Tom"
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Jack"
127.0.0.1:6379>
五、修改操作
1、Set 集合之间移动值
执行
smove key1 key2 value
命令,可以 将 key1 集合的 value 值 移动到 key2 集合 ;
代码示例 :
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Tom"
3) "Jack"
127.0.0.1:6379> smembers age
1) "16"
2) "18"
3) "22"
127.0.0.1:6379> smove name age Tom
(integer) 1
127.0.0.1:6379> smembers name
1) "Jerry"
2) "Jack"
127.0.0.1:6379> smembers age
1) "Tom"
2) "22"
3) "18"
4) "16"
127.0.0.1:6379>
原文地址:https://blog.csdn.net/shulianghan/article/details/129091539
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。