sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan bruger man redis' 'DUMP' og 'RESTORE' (offline)?

Dump/gendan kommandoerne er ikke rigtig designet til at blive brugt fra kommandolinjen, fordi serialiseringsformatet er binært (det er det samme, der bruges til RDB-dumps). Det gør det ubelejligt, fordi skallen har en tendens til at fortolke disse tegn (selv når det "printbare" format bruges).

Her er det "udskrivbare" format:

$ 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 "printbare" format kan ikke bruges som input til -x-indstillingen, som virkelig forventer de faktiske data. Dette er en vildledende adfærd af redis-cli.

Der er dog en nem måde at få det rå format på:

$ 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 er det ikke muligt direkte at pipe resultatet af et --raw-dump i en -x-gendannelse, fordi det sidste tegn er forkert. Sammenlign output fra --raw og printbar dump. Du vil bemærke, at --raw-indstillingen tilføjer en ekstra \n i slutningen. Den rå indstilling er ikke 100% rå;-)

Dette ekstra tegn skal fjernes, før dataene kan behandles med -x-indstillingen. Endelig er den korrekte kommando (på et GNU/Linux-system) til at sende output fra en dump i en gendannelse:

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

Det her er ikke kønt. Jeg forventer, at de fleste mennesker ville stole på et perl/python/ruby script frem for skallen til at udføre sådanne opgaver.




  1. Hvornår skal du Redis? Hvornår skal MongoDB?

  2. MongoDB bulkWrite()

  3. Opdater dokumenter i MongoDB

  4. Advarsel om forbindelse til MongoDB med en nodeserver