首页/数据/数据库速查/缓存序列化选型(JSON / MsgPack / Protobuf)
Redis 运维与场景124 条

缓存序列化选型(JSON / MsgPack / Protobuf)

序列化决定体积与兼容性:JSON 可读通用、MsgPack 紧凑、Protobuf 最小最快但需 schema;带版本前缀便于演进。

数据库速查数据更新于 2026-10-12

对比

格式体积可读性
JSON大好(调试友好)
MsgPack中差(需工具)
Protobuf小差(需 schema)
压缩(JSON+gzip)小(CPU 换)好

键值版本前缀实践

键值版本前缀实践
SET user:1001:v2 '{"name":"张三"}' EX 300
# 结构升级时用 v3 键或兼容解析(双写过渡)
# 反序列化失败不要慌:当作缓存未命中回源重建
原则反序列化失败=未命中,永不因缓存格式问题报错
兼容新增字段可空;删除字段先发过渡版本
压缩大 value 压缩后存,评估 CPU 成本
跨语言服务用 Protobuf/Thrift 更稳;单语言且调试频繁用 JSON 更省事。别在缓存里存不可演进的结构。

易错点

  • 缓存里存 Java 原生序列化对象:跨语言/升级即炸
  • 反序列化异常直接抛给用户:应降级为「未命中」

数据来源与参考

  • Redis 官方文档: 数据类型
  • 缓存序列化实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌