Под "прочным" я имею в виду, что сервер может сбой в любой момент, и пока диск остается в такте, данные не теряются (см. ACID). Похоже, в этом режиме журналирования, но если вы включите ведение журнала, разве это не победит цель работы с данными в памяти? Журналирование может не повлиять на операции чтения, но, похоже, журналирование убьет вашу производительность записи.
Является ли redis долговечным хранилищем данных?
Ответ 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
.)