Redis 数据类型对比

常用数据类型

面向特定用途的高度专业化数据类型(不常用)

如何选择数据类型

下面用三棵简单的 ASCII 决策树列出文档、集合与序列的常见判断逻辑,便于快速查阅。

文档(Documents)

是否需要嵌套的数据结构(字段与数组)或使用 Redis Search 做地理空间索引/查询?
├─ 是  -> Use JSON
└─ 否
   └─ 是否需要使用 Redis Search 进行索引/查询(不含嵌套/地理)?
      ├─ 是 -> Use Hashes
      └─ 否
         └─ 是否需要对文档内的部分数据设置过期时间?
            ├─ 是 -> Use Hashes
            └─ 否
               └─ 是否需要频繁访问可用整数/位索引引用的简单字段?
                  ├─ 是 -> Use Strings
                  └─ 否
                     └─ 是否需要频繁访问具有字符串或二进制值的字段?
                        ├─ 是 -> Use Hashes
                        └─ 否  -> Use Strings

集合(Collections)

是否需要以某种顺序(任意顺序或字典序)检索元素?
├─ 是 -> Use Sorted sets
└─ 否
   └─ 是否需要为集合中的每个键存储额外信息,并且不需要集合运算(交并差)?
      ├─ 是 -> Use Hashes
      └─ 否
         └─ 键是否总是已知范围内的整数索引?
            ├─ 是 -> Use Strings (bitmaps)
            └─ 否 -> Use Sets

序列(Sequences)

是否需要维护任意优先级顺序、字典序、或经常按索引访问元素,或执行集合操作?
├─ 是 -> Use Sorted sets
└─ 否
   └─ 是否需要按时间戳顺序存取或管理多个消费者读取该序列?
      ├─ 是 -> Use Streams
      └─ 否 -> Use Lists

延伸阅读