シリアル化形式はバイナリ(RDBダンプに使用されるものと同じ)であるため、dump/restoreコマンドは実際にはコマンドラインから使用するようには設計されていません。シェルがそれらの文字を解釈する傾向があるため(「印刷可能な」形式が使用されている場合でも)、不便になります。
「印刷可能な」形式は次のとおりです。
$ redis-cli lpush test 1 2 3 4 5
(integer) 5
$ redis-cli dump test
"\n\x15\x15\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\xf6\x02\xf5\x02\xf4\x02\xf3\x02\xf2\xff\x06\x00\x1c\x8a\xda\x0e}\xcb\xe1."
「印刷可能」形式は、実際のデータを実際に期待する-xオプションの入力として使用することはできません。これは、redis-cliの誤解を招く動作です。
ただし、生の形式を取得する簡単な方法があります:
$ redis-cli --raw dump test | hexdump -C
00000000 0a 15 15 00 00 00 12 00 00 00 05 00 00 f6 02 f5 |................|
00000010 02 f4 02 f3 02 f2 ff 06 00 1c 8a da 0e 7d cb e1 |.............}..|
00000020 2e 0a |..|
現在、最後の文字が間違っているため、-x復元で--rawダンプの結果を直接パイプすることはできません。 --rawダンプと印刷可能ダンプの出力を比較します。 --rawオプションは、最後に\nを追加します。生のオプションは100%生ではありません;-)
-xオプションでデータを処理する前に、この余分な文字を削除する必要があります。最後に、復元でダンプの出力をパイプするための正しいコマンド(GNU / Linuxシステムの場合)は次のとおりです。
$ redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0
OK
これはきれいではありません。ほとんどの人は、そのようなタスクを実行するために、シェルではなく、perl / python/rubyスクリプトに依存すると思います。