*Redis DUMP 命令
DUMP 序列化指定 key 的值,返回 Redis 专用的二进制序列化格式(可被 RESTORE 还原)。
*语法
DUMP key
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 键名 |
*返回值
返回序列化后的二进制数据(以 SafeString 形式编码);key 不存在则返回 nil。
*时间复杂度
O(1) 访问 key 加上序列化数据量;序列化过程为 O(M),M 为值大小。
*示例
*序列化字符串
> SET mykey hello
OK
> DUMP mykey
"\x00\x05hello\x06\x00\x8f_\xe4"
*不存在的 key
> DUMP nokey
(nil)
*配合 RESTORE
> DUMP mykey
...
> DEL mykey
...
> RESTORE mykey 0 "<dump>"
OK
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 缺少 key | 必须提供 key |
| WRONGTYPE | key 类型虽支持但操作异常 | DUMP 支持所有类型 |
*最佳实践
- 用于 key 迁移:源节点 DUMP + 目标节点 RESTORE。
- 可作为 Redis 数据的二进制备份手段(比 RDB/AOF 更细粒度)。
- 注意 DUMP 输出包含校验和,但不含 TTL 信息;RESTORE 时需单独指定。
*FAQ
DUMP 格式是公开的协议吗? 是 Redis 内部的 RDB 序列化格式子集,可被 RESTORE 识别。
大数据量 key DUMP 会阻塞吗? 会,DUMP 在主线程执行,超大 key 可能阻塞毫秒级。
DUMP 和序列化库(如 JSON)有什么区别? DUMP 是 Redis 内部二进制格式,保留数据类型和编码信息,仅 Redis 能还原。