Skip to content

Redis 中 Key 的层级格式

Redis 的 Key 层级格式是一种人工约定的命名规范,并非 Redis 内置的技术特性。它的核心目的是通过特殊字符(如 :/)分割不同层级,帮助开发者更清晰地组织和管理 Key,提升代码可读性和维护性。

常用 : 作为分隔符(例如 user:123:profile),层级结构类似文件系统的路径。

Terminal window
# 用户系统
user:123:profile # 用户 123 的详细信息
user:123:orders # 用户 123 的订单列表
# 商品系统
product:789:info # 商品 789 的元数据
product:789:inventory # 商品 789 的库存
  1. 清晰的数据组织
    通过层级分类(如业务模块、对象类型、ID、子资源),快速理解 Key 的用途,例如 comment:456:likes 表示评论 456 的点赞数。
  2. 高效的模式操作
    利用 KEYSSCAN 配合通配符批量管理 Key:
Terminal window
KEYS user:*:orders # 查找所有用户的订单(生产环境慎用 KEYS)
SCAN 0 MATCH product:*:info # 分批次扫描商品信息
  1. 避免 Key 冲突
    在多团队协作或微服务架构中,通过前缀隔离不同业务(如 payment:txn:789logistics:txn:789),天然规避命名冲突。
  1. 分隔符选择一致性
    推荐使用 :(社区惯例),也可用 /-,但需团队统一。避免混用如 user.123.profileorder/456/status
  2. 层级深度控制
    避免过度设计(如 project:789:team:lead:email),过深的层级会降低可读性,可改用 Hash 存储复杂对象:
Terminal window
HSET project:789 team lead "alice@example.com" # 更紧凑的存储
  1. Key 长度与性能
    过长的 Key(如 user:123:transaction:2023:07:15:09:30:log)会占用更多内存,可通过缩写或编码精简(如时间戳 20230715T0930)。
  • Hash 结构
    对同一实体的多个字段,优先使用 Hash 而非多个层级 Key:
Terminal window
# 劣质方案 ❌
SET user:123:name "Alice"
SET user:123:age 30
# 优质方案 ✅
HMSET user:123 name "Alice" age 30
  • 前缀自动管理
    借助 Redis 客户端库(如 Redisson)的 Namespace 功能,自动为 Key 添加统一前缀,减少手动拼接错误。