Как разобрать файл Redis AOF?

Я пытаюсь понять, как работает файл Redis AOF, и, возможно, написать парсер для некоторого простого файла Redis AOF. Прямо сейчас я создал файл AOF, выполнив следующие команды в Redis:

SET firstkey firstvalue
SET secondkey secondvalue

и сгенерированный файл AOF выглядит так:

*2
$6
SELECT
$1
0
*3
$3
SET
$8
firstkey
$10
firstvalue
*3
$3
SET
$9
secondkey
$11
secondvalue

Я вижу такие ключевые слова, как firstkey, firstvalue и SET и т. д. Но я не совсем понял остальное, особенно что означают все эти числа, такие как *2, $6, и как они работают, когда redis пытается прочитать файл aof и перестроить база данных. Я также не смог найти какой-либо документ о формате файла в Интернете, поэтому любая помощь приветствуется!


person RioAraki    schedule 24.03.2019    source источник
comment
Интересный вопрос. Вы уже посмотрели исходник? github.com/antirez/redis/blob/unstable/src/aof. с   -  person Max♦    schedule 24.03.2019


Ответы (1)


*N — это количество аргументов команды, а $M — это длина, т. е. количество байтов, каждого аргумента.

В вашем случае Redis выполнил 3 команды: SELECT 0, SET firstkey firstvalue и SET secondkey secondvalue.

Команда SELECT 0 имеет 2 аргументов, то есть SELECT и 0. Длина первого аргумента — 6, а длина второго аргумента — 1. Итак, записи файла AOF:

*2\r\n$6\r\nSELECT\r\n$1\r\n0\r\n

Вы можете попробовать другие 2 команды для практики.

person for_stack    schedule 25.03.2019