Является ли Redis надежным хранилищем данных? - PullRequest
40 голосов
/ 15 марта 2010

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

1 Ответ

54 голосов
/ 25 марта 2010

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

Однако режим хранилища «добавить только файл» можно при желании настроить на долговременную работу за счет производительности. Он должен будет заплатить за fsync () при каждой модификации. Чтобы настроить это, установите эти два параметра в вашем файле .conf:

 appendonly yes
 appendfsync always

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...