Redis 数据结构核心模型笔记

一、Redis 本质模型

Redis 是 key–value 结构

  • key:必须是字符串
  • value:只能是以下 5 种类型之一
string
list
hash
set
zset

二、一个 key 只能对应一种数据类型

Redis 不支持混合数据结构。

key  →  单一数据结构实例

例如:

user:list        → list
user:profile     → hash
url:dupefilter   → set
rank:score       → zset

不能出现:

❌ 一个 key 同时是 list + hash + set
❌ list 里面直接嵌套 hash / set / zset

三、为什么不能混合?

Redis 底层实现是:

key  →  某种具体数据结构对象
  • list → quicklist
  • hash → dict
  • set → intset / hashtable
  • zset → skiplist + dict

一个 key 只能绑定一个结构对象。

四、Redis 是否支持"嵌套结构"?

❌ 不支持真正嵌套。例如:

list 里面放 hash
list 里面放 set

这是不可能的。因为 list 的元素本质上只是字符串(binary-safe string)。

五、如何实现"复杂结构"?

方法 1:多 key 组合(推荐)

用 key 引用 key,示例:

task:list  →  [ task:1, task:2, task:3 ]

task:1 → hash
task:2 → set
task:3 → zset

本质:list 里存的是其他 key 的名字,这是 Redis 设计复杂结构的标准方式。

方法 2:序列化存储(不推荐)

把复杂结构转成 JSON 作为 string 存储:

{
  "type": "hash",
  "data": {...}
}

缺点:

  • 无法使用 Redis 数据结构命令
  • 性能优势丢失

六、核心理解

✅ Redis = 简单结构 + 多 key 组合
❌ Redis ≠ 嵌套对象数据库

七、一句话总结

Redis 中一个 key 只能对应一种数据类型;value 可以是 string / list / hash / set / zset;不支持混合或嵌套结构;复杂结构必须通过多个 key 组合实现。

标签: none

添加新评论