Подтвердить что ты не робот

Является ли redis долговечным хранилищем данных?

Под "прочным" я имею в виду, что сервер может сбой в любой момент, и пока диск остается в такте, данные не теряются (см. ACID). Похоже, в этом режиме журналирования, но если вы включите ведение журнала, разве это не победит цель работы с данными в памяти? Журналирование может не повлиять на операции чтения, но, похоже, журналирование убьет вашу производительность записи.

4b9b3361

Ответ 1

Redis обычно не используется как "прочный" хранилище данных (в смысле "D" в ACID.) даже при ведении журнала. Большинство случаев использования намеренно жертвуют небольшой прочности в обмен на скорость.

Тем не менее, режим хранения "append only file" может быть настроен для работы в длительном режиме за счет производительности. При каждой модификации придется заплатить за fsync(). Чтобы настроить это, установите эти два параметра в файле .conf:

 appendonly yes
 appendfsync always

Из документов: Насколько долговечен добавочный файл?

Проверьте redis.conf, вы можете настроить сколько раз Redis будет fsync() данных на диске. Существует три варианта:

  • Fsync() каждый раз, когда новая команда добавляется в файл журнала добавления. Очень очень медленно, очень безопасно.
  • Fsync() один раз каждую секунду. Достаточно быстро, и вы можете потерять 1 секунду данных, если есть катастрофа.
  • Никогда fsync(), просто поместите свой данные в руках Система. Более быстрый и небезопасный метод.

(Обратите внимание, что значение по умолчанию для appendfsync в файле конфигурации, отправляемом с Redis post-2.0.0, равно everysec, а не always.)