Redis 集合(Set)

本文介绍了Redis中Set数据结构的基本概念及使用方法,并详细列举了多种Set操作命令,如添加成员(SADD)、获取成员数量(SCARD)、计算集合交集(SINTER)等,帮助读者快速掌握Set的使用技巧。

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

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据

实例

127.0.0.1:6379> sadd setname redis
(integer) 1
127.0.0.1:6379> sadd setname mongodb
(integer) 1
127.0.0.1:6379> sadd setname mysql
(integer) 1
127.0.0.1:6379> smembers setname
1) "mysql"
2) "mongodb"
3) "redis"

在尝试将一个元素添加到集合的时候 , 命令返回 1 表示这个元素被成功地添加到了集合里面 , 而返回 0 则表示这个元素已经存在于集合中 。


Redis 集合命令

1、SADD key member1 [member2]        向集合添加一个或多个成员

127.0.0.1:6379> sadd runoob mysql hadoop java
(integer) 3
127.0.0.1:6379> smembers runoob
1) "java"
2) "mysql"
3) "hadoop"


2、SCARD key      获取集合的成员数

127.0.0.1:6379> scard runoob
(integer) 3


3、SDIFF key1 [key2]          返回给定所有集合的差集

127.0.0.1:6379> sadd oob hbase hadoop hive
(integer) 3
127.0.0.1:6379> sdiff runoob oob
1) "mysql"
2) "java"


4、SDIFFSTORE destination key1 [key2]         返回给定所有集合的差集并存储在 destination 中

127.0.0.1:6379> sdiffstore runoo runoob oob
(integer) 2
127.0.0.1:6379> smembers runoo
1) "mysql"
2) "java"


5、SINTER key1 [key2]           返回给定所有集合的交集

127.0.0.1:6379> sinter runoob oob
1) "hadoop"


6、SINTERSTORE destination key1 [key2]                   返回给定所有集合的交集并存储在 destination 中

127.0.0.1:6379> sinterstore oo runoob oob
(integer) 1
127.0.0.1:6379> smembers oo
1) "hadoop"


7、SISMEMBER key member                   判断 member 元素是否是集合 key 的成员,有的话返回1,没有的话返回0

127.0.0.1:6379> sismember runoob hadoop
(integer) 1
127.0.0.1:6379> sismember runoob scala
(integer) 0


8、SMEMBERS key              返回集合中的所有成员

127.0.0.1:6379> smembers runoob
1) "java"
2) "mysql"
3) "hadoop"


9、SMOVE source destination member                将 member 元素从 source 集合移动到 destination 集合

127.0.0.1:6379> smembers runoob
1) "java"
2) "mysql"
3) "hadoop"
127.0.0.1:6379> smembers oo
1) "hadoop"
127.0.0.1:6379> smove runoob oo mysql
(integer) 1
127.0.0.1:6379> smembers oo
1) "mysql"
2) "hadoop"
127.0.0.1:6379> smembers runoob
1) "java"
2) "hadoop"


10、SPOP key              移除并返回集合中的一个随机元素

127.0.0.1:6379> spop runoob
"java"

127.0.0.1:6379> spop oo 2           后面的数字表示移除多少个
1) "mysql"
2) "hadoop"


11、SRANDMEMBER key [count]             返回集合中一个或多个随机数

127.0.0.1:6379> srandmember runoob
"hadoop"


12、SREM key member1 [member2]              移除集合中一个或多个成员

127.0.0.1:6379> srem runoob hadoop
(integer) 1


13、SUNION key1 [key2]                返回所有给定集合的并集

127.0.0.1:6379> smembers runoo
1) "mysql"
2) "java"
127.0.0.1:6379> smembers oob
1) "hadoop"
2) "hive"
3) "hbase"
127.0.0.1:6379> sunion runoo oob
1) "java"
2) "mysql"
3) "hadoop"
4) "hive"
5) "hbase"


14、SUNIONSTORE destination key1 [key2]                     所有给定集合的并集存储在 destination 集合中

127.0.0.1:6379> sunionstore un runoo oob
(integer) 5
127.0.0.1:6379> smembers un
1) "java"
2) "mysql"
3) "hadoop"
4) "hive"
5) "hbase"


### RedisSet 集合的使用 #### 创建和添加元素到 Set 集合 为了向集合中添加新成员,可以使用 `SADD` 命令。此命令允许一次性添加多个不同的成员至指定键对应的集合里[^3]。 ```bash SADD myset "apple" SADD myset "banana" "orange" ``` #### 查询特定元素是否存在 对于验证某个具体项是否存在于给定名称所代表的集合内,则可通过发送 `SISMEMBER` 请求来完成这一目的[^2]。 ```bash SISMEMBER myset "apple" ``` 如果返回值为 `(integer) 1` 表明该对象确实位于目标集中;反之若是得到的结果是 `(integer) 0` 则说明其不在其中。 #### 移除单个或批量移除多项数据条目 利用 `SREM` 可以轻松地从已存在的集合里面剔除掉不再需要保存的信息单元。 ```bash SREM myset "apple" ``` #### 将成员由源集合转移至另一目的地集合 借助于 `SMOVE` 指令能够实现在两个不同命名空间下的集合间迁移选定项目的功能[^4]。 ```bash SMOVE source_set destination_set "item_to_move" ``` #### 获取整个集合的内容列表 想要查看当前存储在某集合里的全部组件的话,应当调用 `SMEMBERS` 方法获取完整的成员清单。 ```bash SMEMBERS myset ``` #### 执行各种类型的集合运算 除了上述基础功能外,Redis 还支持针对 Sets 实施诸如求交集 (`SINTER`)、并集(` SUNION`) 和差异 (`SDIFF`) 等高级处理方式。 ```bash # 计算交集 SINTER setA setB # 并集计算 SUNION setA setB # 差异分析 SDIFF setA setB ``` 这些操作均能帮助开发者更灵活有效地管理应用程序内的关联性数据结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值