redis set
1. 集合(string)
集合类型 (Set) 是一个无序并唯一的键值集合。它的存储顺序不会按照插入的先后顺序进行存储。 二分搜索树实现
集合类型和列表类型的区别如下:
- 列表可以存储重复元素,集合只能存储非重复元素
- 列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。
一个集合最多可以存储232-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多实际问题。
2. 内部实现
集合类型的内部编码有两种:
- intset(整数集合):当集合中的元素都是整数且元素个数小于set-maxintset-entries配置(默认512个)时,Redis会选用intset来作为集合的内部实现,从而减少内存的使用。
- hashtable(哈希表):当集合类型无法满足intset的条件时,Redis会使用hashtable作为集合的内部实现。
3. 常用命令
命令 | 描述 |
---|---|
sadd key member1 [member2] | 批量添加 |
scard key | 获取集合 |
sdiff key1 [key2] | 集合差异。 |
sdiffstore destination key1 [key2] | 集合差集存储在 destination |
sinter key1 [key2] | 返回集合的交集 |
sinterstore destination key1 [key2] | 返回集合交集存储在 destination |
sismeber key member | 判断 member 元素是否是集合 key 的成员 |
smembers key | 返回集合所有成员 |
smove source destination member | 将 member 元素从 source 集合移动到 destination 集合 |
spop key | 移除并返回随机元素 |
sradmember key [count] | 批量返回集合中随机数 |
srem key member1 [member2] | 批量移除 |
sunion key1 [key2] | 返回所有集合的并集 |
sunionstore destination key1 [key2] | 所有集合的并集存储在 destination 集合中 |
sscan key cursor [MATCH pattern] [COUNT count] | 迭代集合元素 |
4. 使用场景
-
标签系统
集合类型比较典型的使用场景是标签(tag)
-
抽奖系统
redis集合的 SPOP(随机移除并返回集合中一个或多个元素) 和 SRANDMEMBER(随机返回集合中一个或多个元素) 命令可以帮助我们实现一个抽奖系统
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律