Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Bagaimana cara menggunakan redis' `DUMP` dan `RESTORE` (offline)?

Perintah dump/restore tidak benar-benar dirancang untuk digunakan dari baris perintah, karena format serialisasi adalah biner (sama dengan yang digunakan untuk dump RDB). Itu membuatnya tidak nyaman karena shell cenderung menafsirkan karakter tersebut (bahkan ketika format "dapat dicetak" digunakan).

Berikut adalah format "yang dapat dicetak":

$ 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."

Format "dapat dicetak" tidak dapat digunakan sebagai input untuk opsi -x yang benar-benar mengharapkan data aktual. Ini adalah perilaku redis-cli yang menyesatkan.

Namun, ada cara mudah untuk mendapatkan format mentah:

$ 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                                             |..|

Sekarang, tidak mungkin untuk langsung menyalurkan hasil --raw dump di -x restore, karena karakter terakhir salah. Bandingkan output dari --raw dan dump yang dapat dicetak. Anda akan melihat opsi --raw menambahkan \n tambahan di akhir. Opsi mentah tidak 100% mentah;-)

Karakter tambahan ini perlu dihilangkan sebelum data dapat diproses oleh opsi -x. Terakhir, perintah yang benar (pada sistem GNU/Linux) untuk menyalurkan output dump dalam pemulihan adalah:

$ redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0
OK

Ini tidak cantik. Saya berharap kebanyakan orang akan mengandalkan skrip perl/python/ruby daripada shell untuk melakukan tugas seperti itu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Copot pemasangan Redis di Mac OSX. Versi lama berjalan setelah menginstal pembaruan

  2. Flask:menyebarkan pekerjaan pekerja latar belakang (rq, redis)

  3. redis untuk masuk

  4. Redis:Otentikasi NOAUTH diperlukan tetapi tidak ada pengaturan kata sandi

  5. Nilai Redis dan Kueri