0

Redis 文档说

“RESTORE 检查 RDB 版本和数据校验和。如果它们不匹配,则返回错误。”

但是当我恢复密钥时,我没有看到任何错误,如下所示。在开始之前,我记下了两个字符串的转储值,如下所示

坐——\x00\x03sat\x06\x00a_\xfd<\x8eN\xbf\xf2

dfd-\x00\x03dfd\x06\x00\x0b\xcf@\x12BBso

然后我做了

set b sat
del b
restore b 0 "\x00\x03dfd\x06\x00\x0b\xcf@\x12BBso"

在上述代码的第一行中,值b设置为“sat”,但在第三行中,我b使用“dfd”的转储值进行恢复。如 RESTORE 文档中所述,我预计会出现错误。为什么这里恢复成功?

4

1 回答 1

0

非常有趣的问题,我从来没有对文档的那部分进行推理。我认为检查是:

  1. 检查要恢复的数据的RDB版本是否与运行服务器相同(我指的是RDB格式的版本)
  2. 要恢复的数据具有有效的校验和

因此,不会对存储在最后一个可用 RDB 快照上的先前值执行检查。

于 2013-08-29T10:26:23.330 回答