Navicat for Redis 的“备份”功能导出的是可重放的 .redis 命令脚本,非原生 RDB 文件;它不调用 SAVE/BGSAVE,也不解析或导入 dump.rdb,无法保留过期精度、LFU/LRU 计数器及 stream 元数据。

Navicat for Redis 不支持直接执行 RDB 备份,也不支持导入 RDB 文件。 它的“备份”功能导出的是键值对的文本命令文件(.redis),不是 Redis 原生的二进制 dump.rdb;同样,它没有 RDB 解析引擎,无法把 dump.rdb 导入到实例中。这点必须提前确认,否则会误以为操作成功却实际丢失数据一致性或元信息(如过期时间精度、LFU/LRU 计数器等)。
为什么 Navicat 的“备份”不是 RDB 备份
Navicat for Redis 的备份本质是:遍历所有键 → 用 TYPE、TTL、GET/HGETALL/LRANGE 等命令逐个读取 → 拼成可重放的 .redis 命令脚本。它不调用 SAVE 或 BGSAVE,也不访问 Redis 服务器的磁盘文件系统。
- 导出内容不含 Redis 内部结构(如 dict 编码方式、ziplist 长度阈值)、无 AOF 重写逻辑、不保留原始 RDB 的 checksum
- 对带过期时间的键,它用
EXPIREAT写入绝对时间戳,但若备份耗时长,导入时可能已过期 - 不支持
stream类型的完整元数据(如 consumer group offset、last-generated-id) - 生成的
.redis文件在大容量场景下可能远大于原 RDB(例如一个 100MB 的 RDB,导出后命令文件可能达 500MB+)
如何在 Navicat 中执行等效的数据导出与恢复
如果你需要的是“可人工审核、跨版本兼容、轻量迁移”的方案,Navicat 的命令文件流程是可行的,但要注意步骤和限制:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 右键连接或数据库 → 选择
备份→ 在对话框中勾选目标键范围(支持通配符如user:*)→ 设置保存路径为backup.redis - 导出前务必确认 Redis 实例未开启
protected-mode no且客户端有足够权限执行KEYS(或改用SCAN模式,Navicat 16.2+ 默认启用) - 导入时右键连接 →
运行命令文件→ 选择刚生成的backup.redis→ 注意勾选忽略错误继续执行(避免单个键失败中断全部导入) - 导入后建议手动验证:用
DBSIZE对比键总数,用SCAN 0 MATCH user:123 COUNT 1+GET抽样检查值和 TTL
真正需要 RDB 备份时该怎么做
Navicat 无法替代 Redis 原生命令,RDB 备份必须由 Redis 服务端完成:
- 登录 Redis 服务器所在机器,执行
redis-cli -h 127.0.0.1 -p 6379 SAVE(阻塞)或BGSAVE(后台) - RDB 文件默认生成在配置项
dir指定路径下,文件名为dbfilename(默认dump.rdb) - 若需定时 RDB,应配置
save规则(如save 900 1)或使用systemd timer/cron调用BGSAVE - 恢复 RDB:停掉 Redis → 替换
dump.rdb→ 启动 Redis,它会在启动时自动加载
Navicat 只能作为辅助工具查看 RDB 加载后的结果,不能参与 RDB 的生成或解析过程。真正涉及生产环境灾备,必须绕过 GUI,直管 Redis 服务端配置与文件系统权限。

















