reids的数据结构的应用场景

String 字符串

  • 特点:二进制安全,最简单结构
  • 业务场景:分布式锁(SET NX EX)、验证码、token、计数器、简单 JSON 缓存
  • 注意:分布式锁 value 存唯一 UUID,释放锁要用 Lua 脚本,不能直接 DEL

Hash(key‑field‑value)

  • 特点:类似 map,支持局部更新单个字段,不用全量重写
  • 业务场景:用户基础信息、购物车、商品基础信息
  • 注意:只适合扁平对象,不支持嵌套对象;嵌套复杂对象用 String (JSON) / RedisJSON

List 双向链表

  • 特点:有序、允许重复;两端读写快,中间索引查询慢
  • 业务场景:简易消息队列、消息列表、班级对应一批学生名称
  • 注意:不要拿 List 做大量中间位置查询

Set 集合(无序,元素不重复)

  • 特点:自动去重;支持交集 SINTER、并集 SUNION、差集 SDIFF
  • 业务场景:帖子点赞防重复、共同好友计算、标签、小数据 UV 去重
  • 坑:只能给整个 key 设置过期,集合内部单个元素不能单独过期;无序,不能做排序;不适合分布式锁

ZSet 有序集合 member+score

  • 特点:元素唯一,依靠 score 排序;score 仅用来排序
  • 业务场景:排行榜、点赞热度排序、延时队列、带过期的去重(score 存时间戳)
  • 坑:score 是 double 类型,存在精度丢失;不要把完整业务数据存入 score

Bitmap(底层是 String,命令操作 bit 位)

  • 业务场景:用户签到,偏移量代表日期,0 未签到,1 已签到
  • 特点:内存占用极低;offset 下标从 0 开始

HyperLogLog(底层是 String,概率统计)

  • 业务场景:海量 UV 独立访客统计
  • 特点:内存固定约 12KB;允许 0.81% 误差;⚠️拿不到原始元素,只能得到估算总数
  • 命令:PFADD 添加、PFCOUNT 统计、PFMERGE 合并

RedisJSON(Redis8 原生 / RedisStack 模块)

  • 特点:服务端识别 JSON 树形结构,支持 JSONPath 局部读写嵌套字段、数组
  • 对比:
    • String 存 JSON 字符串:全读全改
    • Hash:只能扁平一层
    • RedisJSON:支持多层嵌套局部更新
相关推荐
李兆龙的博客4 小时前
问津集 #26:Lakebase——Postgres 的版本化页面存储、数据库分支与计算弹性
数据库
倔强的石头_6 小时前
聊聊金仓KFS:一款把数据同步软件做扎实的产品
数据库
闲云野鹤在人间6 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
禾小西7 小时前
Redis:从两大维度和三大主线建立知识体系
数据库·redis·缓存
禾小西7 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
数据库小学妹8 小时前
数据共享交换平台选型:交换方式对比与避坑指南
数据库·信创·数据同步·数据交换平台·政务数据共享·数据共享交换平台·数据库底座
loong_XL9 小时前
决策模型做内容安全检测:从踩坑到上线
数据库·安全·jev·决策模型
这个DBA有点耶9 小时前
数据库双轨并行实战:全量并行策略、增量延迟控制、双向回切与一致性校验
数据库·架构·dba
adinnet202610 小时前
保单、赔付与渠道问数:保险经营数据如何实现按需查询
大数据·数据库·人工智能
云贝贝贝10 小时前
PostgreSQL 分区表:从设计到运维,大表不再卡
运维·数据库·postgresql