0

Redisのドキュメントによると

「RESTORE は RDB のバージョンとデータのチェックサムをチェックします。一致しない場合はエラーが返されます。」

しかし、以下のようにキーを復元したときにエラーは表示されません。開始する前に、以下に示す2つの文字列のダンプ値を書き留めました

座った -\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"

上記のコードの 1 行目では値がb'sat' に設定されていますが、3 行目bではダンプ値 'dfd' で復元しています。RESTORE docs に記載されているように、エラーが発生することが予想されました。ここで復元が成功するのはなぜですか?

4

1 に答える 1

0

本当に興味深い質問です。私はドキュメントのその部分について推論したことはありません。チェックは次のとおりだと思います。

  1. 復元するデータのRDBバージョンが実行中のサーバーと同じかどうかを確認します(RDB形式のバージョンを意味します)
  2. 復元するデータに有効なチェックサムがある

そのため、利用可能な最後の RDB スナップショットに保存されている以前の値に対しては、チェックは実行されません。

于 2013-08-29T10:26:23.330 に答える