Redis里头怎么快速搞个集合,顺便教你设置那个集合的操作
- 问答
- 2026-01-10 06:02:58
- 2
想在Redis里快速搞个集合,这事儿其实特别简单,你可以把Redis的集合想象成一个没有顺序、但能自动帮你避免重复的袋子,你往里面扔东西,比如一堆水果的名字,就算你重复扔了“苹果”,这个袋子里也只会有一个“苹果”,这在很多场景下非常有用,比如统计文章的所有唯一标签、记录中奖的用户ID(防止重复中奖)、或者找出两个人的共同好友等等。
怎么创建和添加元素?(来源:Redis命令官方文档,SETS相关命令)
你得有个Redis服务器在运行,并且用客户端连接上了,最核心的命令就是 SADD,这个命令的名字就是“Set Add”的缩写,非常直白。
假设我们现在要创建一个叫做“myset”的集合,里面存放一些水果,你只需要一行命令:
SADD myset apple banana orange
这行命令的意思就是:向名为“myset”的集合中,一次性添加三个成员:“apple”、“banana”和“orange”,myset”这个集合本来不存在,Redis会非常贴心地先帮你创建它,然后再把元素加进去,执行成功后,Redis会返回一个数字,告诉你成功添加了几个新成员,如果这三个水果都是新的,它就返回3,如果你再执行一次 SADD myset apple,它就会返回0,因为“apple”已经存在了,不会被重复添加。
你看,创建一个集合并添加元素,就是这么简单直接,一行命令就搞定了。
怎么查看集合里的所有元素?(来源:Redis命令官方文档,SETS相关命令)
东西加进去了,你总得看看里面有什么吧?这时候就要用到 SMEMBERS 命令,这个名字也很好记,“Set Members”(集合的成员)。
你只需要输入:
SMEMBERS myset
Redis就会把“myset”这个集合里所有的元素都列出来,不过要注意,因为集合是无序的,所以你每次执行这个命令,看到的顺序可能都不一样,这很正常,不用担心。
还有哪些常用的集合操作?(来源:Redis命令官方文档,SETS相关命令)
除了基本的添加和查看,Redis集合真正强大的地方在于它提供了丰富的集合运算操作,这些操作和我们数学课上学的集合运算很像,但用起来更方便。
-
判断一个元素在不在集合里: 使用
SISMEMBER命令,你想知道“myset”里有没有“apple”,就输入:SISMEMBER myset apple如果存在,返回1;不存在,返回0,这个操作速度极快,是集合的一个巨大优势。

-
删除集合里的元素: 使用
SREM命令,想把“banana”从集合里拿走:SREM myset banana -
获取集合的元素个数: 使用
SCARD命令(Cardinality的缩写,意思是基数,也就是集合中不同元素的数量)。SCARD myset -
随机从集合中弹出(取出并删除)一个元素: 使用
SPOP命令,这非常适合抽奖场景,比如从“幸运用户”集合中随机抽一位幸运儿:SPOP lucky_users抽出来后,这个人就从集合中移除了,保证了不会重复抽中。
-
随机从集合中获取一个或多个元素(但不删除): 使用
SRANDMEMBER命令,它只是看看,不真的拿走。SRANDMEMBER myset 2后面的数字2表示你想获取2个随机元素。
高级玩法:集合间的运算(来源:Redis命令官方文档,SETS相关命令)

假设你现在有两个集合,一个叫“friends:user1”,记录用户1的好友ID(比如101, 102, 103),另一个叫“friends:user2”,记录用户2的好友ID(比如102, 103, 104)。
-
求交集: 找出两个用户共同的爱好,使用
SINTER命令。SINTER friends:user1 friends:user2返回结果就是 {102, 103},这是他俩的共同好友。
-
求并集: 把两个用户的所有好友合并在一起(去重),使用
SUNION命令。SUNION friends:user1 friends:user2返回结果是 {101, 102, 103, 104}。
-
求差集: 找出用户1有,但用户2没有的好友,使用
SDIFF命令。SDIFF friends:user1 friends:user2返回结果是 {101},注意,命令的顺序很重要,如果把两个集合调换位置,结果就是用户2有而用户1没有的好友 {104}。
更厉害的是,Redis还允许你把这些运算的结果直接存到一个新的集合里去,只需要在命令后面加上 STORE 参数,想把两个用户的共同好友存到一个叫“common_friends”的新集合里,可以这样做:
SINTERSTORE common_friends friends:user1 friends:user2```
这样,不仅看到了结果,还永久保存了它,后续可以直接使用“common_friends”这个集合。
**一些实用小贴士**
* **性能很好:** 上面提到的这些操作,比如添加、检查是否存在、求交集并集等,在Redis内部都实现得非常高效,即使你的集合里有上百万个元素,速度也很快。
* **存储的是字符串:** 集合里存的都是字符串类型,如果你存的是数字,Redis也会把它当作字符串来存储。
* **没有修改操作:** 集合本身不支持直接修改某个元素,如果你想“修改”,通常的做法是先把这个元素删掉(`SREM`),然后再加入新的元素(`SADD`)。
在Redis里搞个集合并进行操作,核心就是记住几个简单的命令:`SADD`(加)、`SMEMBERS`(看全部)、`SISMEMBER`(查存在)、`SREM`(删),再进阶一点,就是用 `SINTER`, `SUNION`, `SDIFF` 来做集合运算,解决像共同好友、标签合并这类实际问题,整个过程不需要复杂的配置,直接使用命令行就能快速上手,这就是Redis集合的魅力所在。
本文由歧云亭于2026-01-10发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/77892.html
