前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Redis】Redis 集合 Set 操作 ( Set 集合数据 | 查询操作 | 查询所有值 | 随机获取值 | 获取交集并集差集 | 增操作 | 删操作 | 修改操作 )

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

作者头像
韩曙亮
发布2023-03-30 19:09:39
2.4K0
发布2023-03-30 19:09:39
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、Set 集合数据


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

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

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

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

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

二、查询操作


1、获取集合的所有值

执行

代码语言:javascript
复制
smembers key

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

代码示例 :

代码语言:javascript
复制
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、判断键是否包含值

执行

代码语言:javascript
复制
sismember key value

命令 , 可以 判断 key 键中 是否存在 value 值 ;

代码示例 : 查询 Tom 存在 返回 1 , 查询 Bill 不存在 返回 0 ;

代码语言:javascript
复制
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、获取集合元素个数

执行

代码语言:javascript
复制
scard key

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

代码示例 : 获取集合的元素个数为 3 ;

代码语言:javascript
复制
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、随机获取若干元素

执行

代码语言:javascript
复制
srandmember key n

命令 , 可以 从 Set 集合中 随机获取 n 个元素

代码示例 :

代码语言:javascript
复制
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、获取两个集合的交集

执行

代码语言:javascript
复制
sinter key1 key2

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

代码示例 :

代码语言:javascript
复制
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、获取两个集合的并集

执行

代码语言:javascript
复制
sunion key1 key2

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

代码示例 :

代码语言:javascript
复制
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、获取两个集合的差集

执行

代码语言:javascript
复制
sdiff key1 key2

命令 , 可以 获取两个集合的差集 , 在 key1 中存在 , key2 中不存在的 ;

代码示例 :

代码语言:javascript
复制
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、插入值

执行

代码语言:javascript
复制
sadd key value1 value2 ...

命令 , 向 key 键存储多个值 ; 如果插入重复的元素 , 重复的元素会被忽略 , 其它没有重复的元素则成功插入 ;

代码示例 :

代码语言:javascript
复制
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、删除元素

执行

代码语言:javascript
复制
srem key value1 value2 

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

代码示例 : 删除集合中的 2 个元素 ;

代码语言:javascript
复制
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、删除列表指定个数的指定值

执行

代码语言:javascript
复制
spop key

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

代码示例 :

代码语言:javascript
复制
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 集合之间移动值

执行

代码语言:javascript
复制
smove key1 key2 value

命令 , 可以 将 key1 集合的 value 值 移动到 key2 集合 ;

代码示例 :

代码语言:javascript
复制
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>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Set 集合数据
  • 二、查询操作
    • 1、获取集合的所有值
      • 2、判断键是否包含值
        • 3、获取集合元素个数
          • 4、随机获取若干元素
            • 5、获取两个集合的交集
              • 6、获取两个集合的并集
                • 7、获取两个集合的差集
                • 三、增操作
                  • 1、插入值
                  • 四、删操作
                    • 1、删除元素
                      • 2、删除列表指定个数的指定值
                      • 五、修改操作
                        • 1、Set 集合之间移动值
                        相关产品与服务
                        对象存储
                        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档