Redis Set操作怎么用?数据高效管理有哪些方法?学习路径怎么选?

文章导读
Redis Set 操作主要通过 SADD、SMEMBERS、SISMEMBER 等命令实现元素的添加、查询与删除,利用其无序唯一特性进行高效去重。数据高效管理方法包括使用集合运算(交集、并集、差集)处理社交关系或标签系统,以及合理选择底层编码(intset 或 hashtable)。学习路径建议先掌握基础命令语法,再深入理解内部数据结构原理,最后结合业务场景如抽奖去重、共同好友推荐进行实战练习,
📋 目录
  1. Redis 命令-Set 命令
  2. Redis 之 Set 和 Zset 使用及说明
  3. Redis Set 类型常用操作命令之从基础命令到实战应用
  4. FAQ
A A

Redis Set 操作主要通过 SADD、SMEMBERS、SISMEMBER 等命令实现元素的添加、查询与删除,利用其无序唯一特性进行高效去重。数据高效管理方法包括使用集合运算(交集、并集、差集)处理社交关系或标签系统,以及合理选择底层编码(intset 或 hashtable)。学习路径建议先掌握基础命令语法,再深入理解内部数据结构原理,最后结合业务场景如抽奖去重、共同好友推荐进行实战练习,从而构建从理论到应用的知识体系。

Redis 命令-Set 命令

Redis 的 Set(集合) 是一个无序、唯一、基于哈希表的数据结构,天然支持去重和集合运算。典型应用场景包括:✅用户标签系统 (如“科技”、“金融”) ✅社交关系 (好友、关注、粉丝) ✅抽奖去重 (已中奖用户不再参与) ✅共同兴趣推荐 (交集计算) 本文将系统讲解 Redis Set 的核心命令,并通过真实业务案例展示其强大能力。二、Set 核心命令速查表

命令作用时间复杂度
SADD key member [member ]添加一个或多个成员O(1) 每个成员
SREM key member [member ]移除一个或多个成员O(1) 每个成员
SMEMBERS key获取所有成员O(N),N=成员数
SCARD key获取集合大小O(1)
SISMEMBER key member判断成员是否存在O(1)
SRANDMEMBER key [count]随机返回一个或多个成员O(N),N=count
SPOP key [count]随机弹出并移除成员O(N)
SMOVE source destination member将成员从一个集合移到另一个O(1)
集合运算命令
命令作用时间复杂度
SINTER key [key ]求多个集合的 交集O(N×M),N=最小集合大小,M=集合数
SUNION key [key ]求多个集合的 并集O(N+M+)
SDIFF key [key ]求第一个集合与其他集合的 差集O(N+M+)
SINTERSTORE dest key [key ]将交集结果存储到新集合同 SINTER
SUNIONSTORE dest key [key ]将并集结果存储同 SUNION
SDIFFSTORE dest key [key ]将差集结果存储同 SDIFF
💡关键特性:成员唯一 (自动去重) 无序 (不保证插入顺序) 支持高效集合运算

Redis 之 Set 和 Zset 使用及说明

set 集合 集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中 1) 元素之间是无序的 2) 元素不允许重复,如下图。一个集合中最多可以存储 2^32-1 个元素。redis 除了支持集合内的增删查改操作,同时还支持多个集合取交集,并集,差集,合理地使用好集合类型,能在实际开发中解决很多问题。普通命令 sadd 将一个或者多个元素添加到 set 中。注意,重复的元素无法添加到 set 中。语法:sadd key member [member ] 返回值:本次添加成功的元素个数。示例:smembers 获取一个 set 中的所有元素,注意,元素间的顺序是无序的。语法:smembers key 返回值:所有元素的列表。示例:sismember 判断一个元素在不在 set 中。语法:sismember key member 返回值:1 表示元素在 set 中.0 表示元素不在 set 中或者 key 不存在。示例:scard 获取一个 set 的基数 (cardinality),即 set 中的元素个数。语法:scard key 返回值:set 内的元素个数。示例:spop 从 set 中删除并返回一个或者多个元素。注意,由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,即可以看作随机的。语法:spop key [count] count:删除的个数,不写默认是 1 返回值:取出的元素。示例:srandmember 随机获取值 语法:srandmember key [count] 示例:

Redis Set操作怎么用?数据高效管理有哪些方法?学习路径怎么选?

Redis Set 类型常用操作命令之从基础命令到实战应用

在 Redis 的众多数据结构中,Set(集合) 是一种非常有特色的类型。它与列表 (List) 类似,都可以存储多个字符串元素,但 Set 具有两个核心特性:元素的无序性和元素的唯一性。无序性意味着 Set 中的元素没有先后顺序,{a, b, c} 和 {c, a, b} 被认为是同一个集合。唯一性确保了每个元素在集合中只会出现一次,这使得 Set 成为实现数据去重、统计独立访客 (UV) 等场景的天然选择。本文将深入探讨 Redis Set 类型的常用操作命令,包括添加、删除、查询以及强大的交集、并集、差集运算,并结合实际应用场景,展示 Set 在开发中的妙用。1、集合中的元素是无序的 list[1,2,3] 和 [2,3,1] 是两个不用的 list set[1,2,3] 和 [2,3,1] 是一个集合 2、集合中的元素是不能重复的 (元素都是唯一的) 集合可以用来进行去重 和 list 类似,集合中的每个类型,也都是 string 类型 可以使用 JSON 这样的格式让 string 也能存储 sadd、smembers、sismember sadd:将一个或者多个元素添加到 set 中,注意,重复的元素无法添加到 set 中的 这里的个体元素叫做 member 时间复杂度是 O(1) 1 saddkeymember [member ] 返回值就是本次操作成功添加了几个元素 不能重复添加一个数 smembers:获取一个 set 中的所有元素,注意,元素之间的顺序是无序的 1 smembers key sismember:判断一个元素在不在 set 中,在的话就返回 1,不在的话就返回了 0 时间复杂度 O(1) 1 sismember key member spop、srandmember 正常的 pop 是删除末尾元素的,我们这里是因为是集合中,无序的,所以 spop 是随机删除的 spop:从 set 中删除并返回一个或者多个元素,注意,由于 set 内的元素是无序的,所以取出的元素是随机的 这里的 count 是要删除几个元素,不写的话就是默认删除一个元素,写的话就是删除 count 个元素 1 spopkey[count] srandmember 是从指定的集合中返回一个或者多个元素 1 srandmemberkey[count] smove、srem smove 将一个元素从一个集合中取出并且放到另一个集合中去 1 smove source destination member 返回值 1 表示移动成功,0 表示移动失败 将 member 从 source 上删除,然后插入到 destination 中

FAQ

Redis Set 和 List 的主要区别是什么?

List 是有序且允许重复的列表,而 Set 是无序且元素唯一的集合。

Redis Set操作怎么用?数据高效管理有哪些方法?学习路径怎么选?

Set 底层是如何实现的?

当元素均为整数且数量较少时使用整数集合 (intset),否则使用哈希表 (hashtable)。

Redis Set操作怎么用?数据高效管理有哪些方法?学习路径怎么选?

如何进行集合交集运算?

使用 SINTER 命令可以计算多个集合的交集,结果可存储到新集合使用 SINTERSTORE。