Redis Core 是一份面向 Redis 数据建模的基础指导,聚焦数据建模中两个最关键、也最影响内存、性能与可维护性的决策:数据类型选择与键名规范。
一、用途 该指导用于在 Redis 中建模数据时做出结构性选择,覆盖两类核心问题:第一,为具体访问模式选择正确的数据类型;第二,为键设计一致、可读、可维护的命名层级。资料给出的适用时机包括:缓存对象、会话或按用户状态;计数器、排行榜、最近条目列表、唯一成员集合;审查或重构 Redis 键名;为某个实体在 Redis Hash 与 JSON 文档之间做选型。
二、主要能力
- 数据结构选型建议。指引强调应按访问模式选型,而不是只看数据的外形。资料给出的对应关系为:简单值、计数器用 String,理由是支持原子的 INCR/DECR 与 SET/GET;可独立更新字段的对象用 Hash,支持按字段读写,无需重写整个对象;队列、最近 N 条条目用 List,两端 push/pop 为 O(1);唯一成员、成员判断用 Set,支持 O(1) 的 SADD/SISMEMBER/SCARD;排名与按分数范围查询用 Sorted Set,按分数排序,支持 ZADD/ZRANGE/ZRANK;嵌套或层级数据用 JSON,支持路径级更新、嵌套数组与 RQE 索引;事件日志、扇出消息用 Stream,具备持久化与消费者组;向量相似度用 Vector Set,提供基于 HNSW 的原生向量存储。
- 反模式提示。资料指出一种常见反模式:把扁平对象塞进序列化字符串,导致更新一个字段也要执行取出、解析、修改、重写整条流程;此时应改用 Hash。
- 键名规范。指引建议使用冒号分隔的段与稳定层级,形式为 {entity}:{id}:{attribute},示例包括 user:1001:profile、user:1001:settings、order:2024:items、session:abc123、article:987:likes、game:space-invaders:leaderboard。
- 键名规则要点。资料列出:小写、冒号分隔,不使用空格、不混用大小写(如 User_1001_Profile 是不好的写法);键要短但可读,因为键常驻内存并出现在每条命令中;不要用完整 URL 或长字符串作键,应提取短标识或使用 URL 的哈希摘要;多租户场景加前缀(如 tenant:42:user:7:cart),便于扫描与 ACL 按租户定向;保持一致性,每个服务选定一种约定并应用到所有键。
三、使用方式 资料以指导文档形式组织,包含“何时应用”的判定条件、按用例推荐类型的表格、反模式说明与键名规则清单,并指向进一步参考材料:references/choose-data-structure.md(含完整理由与 Python/Java 示例)以及 references/key-naming.md(含清理示例与边界情况);文末参考 Redis 官方关于选择数据类型与键的文档。具体安装命令、完整代码示例与逐步操作流程暂未提供。
四、适用场景 适用于需要为缓存、会话、计数器、排行榜、最近条目、唯一成员集合、事件日志、向量检索等场景设计 Redis 数据模型的开发者与架构评审者,也适用于对既有 Redis 键名做审查、清理和统一规范的团队。
五、限制 资料为选型与命名指导,不包含性能基准、具体版本要求、集群或持久化配置细节;收费、价格与平台限制暂未提供;文中引用的参考文件内容与代码示例全文暂未提供。