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:支持多层嵌套局部更新
相关推荐
螺蛳粉 螺蛳粉1 小时前
mysql的备份与恢复
linux·运维·数据库·mysql
艾醒(AiXing-w)2 小时前
LangChain 1.0 智能体开发(三):Agent 记忆管理——从短期对话到跨会话长期记忆
数据库·人工智能·langchain
MSTcheng.2 小时前
KES 进了 K8s 之后运维归谁管?
数据库
知识的搬运工旺仔2 小时前
CREATE INDEX CONCURRENTLY:线上建索引不阻塞 DML 的代价与坑
数据库·后端·sql
guo_wen_qiang3 小时前
mysql中有哪些日志
数据库·mysql
达梦数据3 小时前
达梦数据复制软件DMDRS搭建部署示例:源数据库DM8到目标数据库DM8数据迁移
数据库
沪上企服通3 小时前
旧账系统的信创迁移工程:从 MySQL/Oracle 到国产库、国密与电子会计档案闭环
数据库·笔记·数据库架构
m0_715674434 小时前
智能化+基于行标+场景化 政务数据库审计与风险监测全维度解决方案
网络·数据库·安全·网络安全·政务