当前位置:   article > 正文

【Redis】Redis 集合 Set 操作 ( Set 集合数据 | 查询操作 | 查询所有值 | 随机获取值 | 获取交集并集差集 | 增操作 | 删操作 | 修改操作 )_redis set

redis set





一、Set 集合数据



Redis 的 Set 集合数据 , 与 List 列表功能相似 , 唯一的区别是 Set 集合中的元素 是 不允许重复的 ;

该 Set 集合 是一个 无序集合 , 存储 String 类型数据 ;

Set 集合底层是由 Hash 表实现 的 , 本质是 字典结构 , 其 添加 , 删除 , 查找 元素的 时间复杂度 是 O(1) ;


Java 的 HashSet 集合 内部由 HashMap 实现 , 所有的 值 Value 都指向同一个实例对象 ;

Redis 的 Set 集合 内部也是由 Hash 实现 , 所有的 值 Value 都指向同一个值 ;





二、查询操作




1、获取集合的所有值


执行

smembers key
  • 1

命令 , 可以 获取 集合的 所有值 ;


代码示例 :

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述


2、判断键是否包含值


执行

sismember key value
  • 1

命令 , 可以 判断 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述


3、获取集合元素个数


执行

scard key
  • 1

命令 , 可以 获取集合元素个数 ;


代码示例 : 获取集合的元素个数为 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述


4、随机获取若干元素


执行

srandmember key n
  • 1

命令 , 可以 从 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述


5、获取两个集合的交集


执行

sinter key1 key2
  • 1

命令 , 可以 获取两个集合的交集 ;


代码示例 :

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述


6、获取两个集合的并集


执行

sunion key1 key2
  • 1

命令 , 可以 获取两个集合的并集 ;


代码示例 :

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述


7、获取两个集合的差集


执行

sdiff key1 key2
  • 1

命令 , 可以 获取两个集合的差集 , 在 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在这里插入图片描述





三、增操作




1、插入值


执行

sadd key value1 value2 ...
  • 1

命令 , 向 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述





四、删操作




1、删除元素


执行

srem key value1 value2 
  • 1

命令 , 可以 删除 集合 中的某些元素 ;


代码示例 : 删除集合中的 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述


2、删除列表指定个数的指定值


执行

spop key
  • 1

命令 , 可以 随机从集合中获取某个值 , 该值会在集合中删除 ;


代码示例 :

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述





五、修改操作




1、Set 集合之间移动值


执行

smove key1 key2 value
  • 1

命令 , 可以 将 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/513082
推荐阅读
相关标签
  

闽ICP备14008679号