*Redis FUNCTION RESTORE 命令

FUNCTION RESTORE 用于从二进制数据(FUNCTION DUMP 的输出)恢复函数库。


*语法

FUNCTION RESTORE <payload> [FLUSH | APPEND]

*参数说明

参数 类型 必填 说明
payload String FUNCTION DUMP 生成的二进制数据
FLUSH Flag 恢复前清空现有函数库
APPEND Flag 将恢复的函数追加到现有库(默认行为)

*返回值

  • OK:恢复成功
  • Error:数据损坏、库名冲突等

*时间复杂度

O(N),其中 N 是恢复数据的大小


*示例

*基本用法(追加模式)

> FUNCTION DUMP
"\x04\x01\x00\x00..."
> FUNCTION RESTORE "\x04\x01\x00\x00..."
OK

*先清空再恢复

> FUNCTION RESTORE "\x04\x01\x00\x00..." FLUSH
OK

*常见错误

错误 原因 解决
ERR payload failed check 数据损坏或不兼容 确认 DUMP 数据完整且版本兼容
ERR Library 'mylib' already exists 库名冲突(未带 FLUSH) 使用 FLUSH 或先删除冲突库

*最佳实践

  • 场景:函数库迁移、灾难恢复、多实例同步
  • 建议定期使用 FUNCTION DUMP 备份,并通过 RESTORE 恢复
  • 跨实例迁移时建议先 FLUSH 目标实例,避免库名冲突
  • 注意:恢复的数据会覆盖或追加,取决于使用的选项

*FAQ

Q1: FUNCTION RESTOREFUNCTION LOAD 有什么区别? A: FUNCTION RESTORE 从二进制 DUMP 恢复,保留原始状态和元数据;FUNCTION LOAD 从 Lua 源代码加载,需要重新编译。

Q2: 可以部分恢复某个函数吗? A: 不可以。FUNCTION DUMPRESTORE 是针对整个函数库的操作,无法单独恢复某个函数。

Q3: 恢复的数据版本不兼容怎么办? A: 建议在同版本或兼容版本之间操作。如果版本差异大,可能需要导出 Lua 源代码重新加载。