sql >> Databasteknik >  >> NoSQL >> Redis

Hur använder man redis 'DUMP' och 'RESTORE' (offline)?

Dump/återställ-kommandona är egentligen inte designade för att användas från kommandoraden, eftersom serialiseringsformatet är binärt (det är samma som används för RDB-dumpar). Det gör det obekvämt eftersom skalet tenderar att tolka dessa tecken (även när det "utskrivbara" formatet används).

Här är det "utskrivbara" formatet:

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

Det "utskrivbara" formatet kan inte användas som indata för alternativet -x som verkligen förväntar sig de faktiska data. Detta är ett missvisande beteende av redis-cli.

Det finns dock ett enkelt sätt att få råformatet:

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

Nu är det inte möjligt att direkt skicka resultatet av en --rådumpning i en -x-återställning, eftersom det sista tecknet är fel. Jämför utdata från --rå och utskrivbar dump. Du kommer att märka att --raw-alternativet lägger till en extra \n i slutet. Det råa alternativet är inte 100 % rått;-)

Detta extra tecken måste tas bort innan data kan bearbetas med alternativet -x. Slutligen är det korrekta kommandot (på ett GNU/Linux-system) för att skicka utdata från en dump i en återställning:

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

Det här är inte snyggt. Jag förväntar mig att de flesta skulle förlita sig på ett perl/python/ruby-skript snarare än skalet för att utföra sådana uppgifter.




  1. Introduktion till HDFS Federation &Architecture

  2. mongo:avkastningen är inte lika med count()

  3. Fel avståndsberäkning med MongoDB

  4. nginx uwsgi websockets 502 Bad Gateway uppströms stängde i förtid anslutning vid läsning av svarshuvud från uppströms