标准答案

  1. 字符串适合简单值、序列化对象、计数器和短期令牌;哈希适合字段独立更新的对象,但要控制字段数量和单对象体积。
  2. 集合适合去重、集合运算和成员判断;有序集合适合排行榜、按分数或时间范围检索,但不是关系型多条件查询的替代品。
  3. 位图适合固定或可映射范围内的布尔状态,例如签到、权限位和活跃标记;它节省空间但需要设计稳定的位编号和统计边界。
  4. 流适合追加事件和消费者组处理,需要管理确认、积压、保留和故障恢复;它不是无上限日志仓库。

题目解析

结构选型决定复杂度。用一个大 JSON 字符串保存所有字段会使局部更新和并发覆盖困难;用过多小 Key 又会增加内存元数据、网络往返和管理成本。

选择前应列出主查询:按 ID 读、按字段改、按时间取、集合去重还是消费事件。没有查询模式,数据结构的答案就会流于 API 罗列。

常见误区

  • 把 Redis Hash 当成可以无限扩张的关系表。
  • 把 Sorted Set 用于需要多字段筛选、事务关联和复杂分页的核心业务查询。

作者信息