跳到正文
Elaine Blog
返回

Redis 数据类型与典型建模

Redis 与缓存工程

Redis 建模先写清楚“按什么键访问、需要什么原子操作、数据保留多久”,再选择数据类型。不要先把 Java 对象全部序列化成 JSON String,否则会失去服务端集合操作和细粒度更新能力。

Table of contents

Open Table of contents

先运行五种核心类型

进入缓存工程实验室下载,启动 Redis 后运行:

mvn -Dredis.uri=redis://:lab-password@localhost:6380 \
  -Dtest=RedisIntegrationTest#modelsFiveCoreDataTypes test

测试分别写入会话、商品字段、任务列表、灰度用户集合和排行榜。五种类型的典型边界如下:

类型结构适合场景
String一段字节、整数或浮点数缓存值、计数器、状态位
Hash一个 Key 下的字段和值小型对象、局部字段更新
List有序且可重复的序列简单队列、最近记录
Set无序且唯一的成员标签、去重、集合运算
Sorted Set成员唯一、按分数排序排行榜、时间窗口、优先级

生产消息队列通常优先评估 Stream 或专业消息系统,因为 List 缺少完整的消费组、待确认与重投语义。

Key 也是数据模型

使用稳定、可读、可统计的命名,例如 product:{42}:detail:v3。冒号只是团队约定;Cluster 中花括号内容会参与 Hash Tag 计算,可让相关 Key 落在同一槽位,但也可能制造热点。

Key 应记录所有者、TTL、预计数量、值大小、敏感级别和删除方式。TTL 是 Time To Live,即剩余生存时间。缓存数据通常必须设置 TTL;幂等标记、锁和临时状态还要根据业务最长窗口设置上限。

选择前问四个问题

  1. 需要读取完整对象还是单个字段?
  2. 需要去重、排序、范围或集合运算吗?
  3. 一条命令能否完成必须原子的变化?
  4. 单个 Key 的成员数和字节数上限是多少?

参考 Redis 数据类型总览数据类型比较

下一步

继续阅读07-02 Redis 线程模型、I/O 多路复用与命令原子性,理解这些命令为什么快,以及什么操作会拖慢所有请求。


分享这篇文章:

上一篇
Temporal、Camunda 与持久工作流
下一篇
Redis 线程模型、I/O 多路复用与命令原子性