【Redis】Redis 集合 Set 操作 ( Set 集合数据 您所在的位置:网站首页 Redis中increase 【Redis】Redis 集合 Set 操作 ( Set 集合数据

【Redis】Redis 集合 Set 操作 ( Set 集合数据

2023-04-12 06:49| 来源: 网络整理| 查看: 265

文章目录

一、Set 集合数据二、查询操作1、获取集合的所有值2、判断键是否包含值3、获取集合元素个数4、随机获取若干元素5、获取两个集合的交集6、获取两个集合的并集7、获取两个集合的差集三、增操作1、插入值四、删操作1、删除元素2、删除列表指定个数的指定值五、修改操作1、Set 集合之间移动值一、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>


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有