redis set



1. 集合(string)

集合类型 (Set) 是一个无序并唯一的键值集合。它的存储顺序不会按照插入的先后顺序进行存储。 二分搜索树实现

集合类型和列表类型的区别如下:

  • 列表可以存储重复元素,集合只能存储非重复元素
  • 列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。
    一个集合最多可以存储232-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多实际问题。

image


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. 使用场景

  1. 标签系统

    集合类型比较典型的使用场景是标签(tag)

  2. 抽奖系统

    redis集合的 SPOP(随机移除并返回集合中一个或多个元素) 和 SRANDMEMBER(随机返回集合中一个或多个元素) 命令可以帮助我们实现一个抽奖系统

posted @   linsonga  阅读(242)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示