Redis 集合(Set)介绍与基本操作

本文详细介绍Redis集合的基本操作,包括元素的增删查改及集合之间的交并差运算。通过实例展示了如何使用sadd、srem等命令进行集合元素管理,以及如何利用sdiff、sinter等命令实现集合运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:学习笔记,有错希指正、
本篇将介绍redis中集合最常用的一些指令,插入,删除,移动元素到另一个集合,以及多个集合的交并差运算。

命令操作
sadd加一个或者多个元素加入到集合里面,并返回被添加当中原本并不在集合里面的数量
srem移除一个或者多个元素,并返回移除的数量
sismember检查某个元素是否存在某个集合里面
scard返回集合里面元素的数量
smembers返回集合里面所有的元素
srandmember从集合里面随机返回一个或者多个元素
spop随机移除一个元素,返回随机移除的元素
smovesmove source-key dest-key item 如果集合source-key包含元素item,那么从集合source-key里面移除元素item,并添加到集合dest-key里面,如果移除成功移除,那么命令返回1,否则返回0
sdiffsdiff key-name [key-name …] 返回那些存在于第一个集合,但不存在其他集合当中的元素(相当于差集运算)
sdiffstoresdiffstore store-key key1 [key… ] 将存在于第一个集合,但不存在其他集合当中的元素(相当于差集运算)找出来,并且存到dest-key里面,区别于上一步就是多了一个保存
sinter交集运算
sinterstore交集运算并存储
sunion并集运算
sunionstore并集运算并存储

--基本增删改操作
--增加多个元素
redis 127.0.0.1:6379> sadd set-key1 a b c d e
(integer) 5
redis 127.0.0.1:6379> smembers set-key1
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
--返回集合元素数量
redis 127.0.0.1:6379> scard set-key1
(integer) 5
--检查是否存在某元素
redis 127.0.0.1:6379> sismember set-key1 a
(integer) 1
--移除某元素
redis 127.0.0.1:6379> srem set-key1 a
(integer) 1
--移除后
redis 127.0.0.1:6379> smembers set-key1
1) "b"
2) "c"
3) "d"
4) "e"
--随机移除 第一个语法错误
redis 127.0.0.1:6379> spop b
(nil)
--直接spop某个键名 返回随机移除元素
redis 127.0.0.1:6379> spop set-key1
"c"
--创建第二个集合
redis 127.0.0.1:6379> sadd set-key2 dest
(integer) 1
--查询set-key1的元素
redis 127.0.0.1:6379> smembers set-key1
1) "d"
2) "e"
3) "b"
--移动set-key1的元素e到set-key2
redis 127.0.0.1:6379> smove set-key1 set-key2 e
(integer) 1
--查看移动后的结果
redis 127.0.0.1:6379> smembers set-key2
1) "dest"
2) "e"
--被移除集合无被移除元素 返回0
redis 127.0.0.1:6379> smove set-key1 set-key2 f
(integer) 0
--进行交并差运算
--set-key1初始化
redis 127.0.0.1:6379> sadd set-key1 a b c d e f
(integer) 4
--set-key2初始化
redis 127.0.0.1:6379> sadd set-key2 c f
(integer) 2
--查看set-key1
redis 127.0.0.1:6379> smembers set-key1
1) "c"
2) "d"
3) "e"
4) "f"
5) "a"
6) "b"
--查看set-key2
redis 127.0.0.1:6379> smembers set-key2
1) "c"
2) "dest"
3) "e"
4) "f"
--求差集
redis 127.0.0.1:6379> sdiff set-key1 set-key2
1) "d"
2) "a"
3) "b"

--将差的结果存到第三个集合set-key3里面
redis 127.0.0.1:6379> sdiffstore set-key3 set-key1 set-key2
(integer) 3
redis 127.0.0.1:6379> smembers set-key3
1) "d"
2) "a"
3) "b"
--下面不再展示并集和交集的运算,原理一模一样
命令为:
sinter 交集
sinterstore 交集存储
sunion 并集
sunion 并集存储
redis 127.0.0.1:6379>>
### Java Redis Set 集合操作示例 #### 获取两个集合的差集 为了获取存储在Redis中的两个`Set`类型的键之间的差异,可以使用Jedis客户端库提供的方法。下面是一个具体的例子: ```java import redis.clients.jedis.Jedis; import java.util.Set; public class JedisExample { public static void main(String[] args) { try (Jedis jedis = new Jedis("localhost")) { // 建立到本地Redis服务器的连接 Set<String> difference = jedis.sdiff("jset1", "set1"); System.out.println(difference); } } } ``` 此代码片段展示了如何从名为`jset1`的集合中减去`set1`的内容并打印结果[^1]。 #### 创建HashSet实例 当涉及到Java内部的数据结构时,`HashSet`被广泛用于表示无序且不允许重复元素的集合。值得注意的是,在实现上,`HashSet`依赖于`HashMap`来管理其成员,其中所有的值都映射到了相同的对象实例上[^2]。 #### 删除Redis中的集合数据 对于想要移除特定名称下的所有条目而言,可以通过调用相应的命令完成这一任务。这里提供了一个简单的流程概述以及对应的编程接口调用来帮助理解整个过程: ```java try (Jedis jedis = new Jedis("localhost")) { String keyToDelete = "your-set-key"; Long deletedCount = jedis.del(keyToDelete); System.out.printf("Deleted %d elements from set '%s'.%n", deletedCount, keyToAdd); } ``` 上述代码实现了描述一致的操作序列——建立连接、执行删除指令最后关闭资源释放链接[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值