Hash比String存对象更省内存因Hash共享字段名并采用ziplist/hashtable压缩编码实测省40%–60%String则重复存储key、引号、逗号等冗余字符。为什么 Hash 比 String 存对象更省内存直接存 JSON 字符串到 String 类型每个字段都带 key 名、引号、逗号、空格——这些全算内存。而 HASH 把字段名和值分别编码复用字段名比如 1000 个用户都有 name、age底层用 ziplist 或 hashtable 压缩存储实测能省 40%–60% 内存。关键不是“结构好看”是 Redis 对 HASH 的字段名做了共享前缀和紧凑编码String 则完全没这层优化。什么时候该用 HASH 而不是 JSON String满足以下任一条件就该切到 HASH对象字段固定且数量少如 user:{id} 含 name/email/status需要频繁读写单个字段HGET user:123 name 比 GET user:123 再解析 JSON 快得多要批量更新几个字段但不想反序列化/序列化整条 JSONHMSET user:123 name a status active字段值普遍较短ziplist 编码生效阈值默认 hash-max-ziplist-entries 512 hash-max-ziplist-value 64如果字段名不固定、嵌套深如 address.city、或单字段超 64 字节且数量多ziplist 会退化为 hashtable优势减弱。必须调的两个配置项避免 ziplist 过早退化默认配置在字段稍长或稍多时就触发 hashtable失去压缩优势。上线前务必检查 RedClaw 百度推出的手机端万能AI Agent助手