Doldurma/geri yükleme komutları gerçekten komut satırı tarafından kullanılmak üzere tasarlanmamıştır çünkü seri hale getirme biçimi ikilidir (RDB dökümleri için kullanılanla aynıdır). Kabuk, bu kabuğun bu karakterleri yorumlama eğiliminde olduğundan ("yazdırılabilir" biçim kullanıldığında bile) rahatsızlık verir.
$ 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."
"yazdırılabilir" formatında gerçekten gerçek verileri bekliyor -x seçeneği için girdi olarak kullanılamaz: Burada
"yazdırılabilir" biçimidir. Bu redis-cli'nin yanıltıcı bir davranışıdır.
Ancak ham biçimi elde etmenin kolay bir yolu vardır: Artık
$ 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 |..|
, doğrudan boru bir -x ile bir -Ham dökümü sonucu geri mümkün değildir son çünkü karakter yanlış. --raw ve yazdırılabilir döküntünün çıktısını karşılaştırın. --raw seçeneğinin sonunda ek bir \ n eklediğini göreceksiniz. Ham seçenek% 100 raw değildir ;-)
Veriler -x seçeneği tarafından işlenmeden önce bu ek karakterin kaldırılması gerekir. Son olarak, boruya doğru komut (bir GNU/Linux sisteminde) bir geri yükleme bir dökümü çıktısı: Bu hoş değil
$ redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0
OK
. Çoğu insanın böyle görevler yerine kabuktan ziyade perl/python/ruby betiğine güvenmesini beklerim.
bu başlık komutu sadece linux üzerinde çalışacaktır, mac değil – slf
Teşekkürler. Dediğiniz gibi, bu iki komut, komut satırında kullanılmak üzere tasarlanmamıştır, ancak yine de bu muhtemelen bunu yapmanın en iyi yolu. –
Eğer bir macdaysanız, gnu başını ghead ismiyle yükleyeceğiniz install coreutils' demeleyebilirsiniz. Bu şekilde, yukarıdaki komutu ghead ile değiştirerek başınızı çalıştırabilirsiniz –