2010-03-15 4 views
36

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

+5

Вы не можете иметь его в обоих направлениях. Либо некоторые данные находятся в подвешенном состоянии, либо вам придется ждать, пока все данные будут записаны на диск. –

+5

Именно поэтому я задаю этот вопрос. – allyourcode

ответ

49

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

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

appendonly yes 
appendfsync always 

Из документов: How durable is the append only file?

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

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

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

+3

Полезно знать. Можете ли вы предоставить ссылку для поддержки того, что вы говорите? – allyourcode

+1

@FrankFarmer Я отредактировал ответ, потому что он имел устаревшую информацию о настройке по умолчанию и также «похоронил заголовок» немного, руководствуясь «Нет». Не стесняйтесь улучшать мои улучшения. :-) – HostileFork

+1

@HostileFork, учитывая существенные изменения, которые вы сделали, я думаю, вам будет лучше подать свой собственный ответ. Это было достаточно долго, что новая перспектива, безусловно, приветствуется. –