В основному доступні два основних типи: асинхронні знімки та fsync()
. Вони називаються RDB та AOF відповідно. Детальніше про режими стійкості на офіційній сторінці .
Обробка сигналу демонізованого процесу синхронізується з диском, коли він отримує, наприклад, SIGTERM, тому дані все одно будуть там після перезавантаження. Я думаю, що демон або ОС повинні вийти з ладу, перш ніж ви побачите пошкодження цілісності, навіть із налаштуваннями за замовчуванням (моментальні знімки RDB).
Параметр AOF використовує файл лише додавання, який реєструє команди, які отримує сервер, і відтворює БД з нуля при холодному запуску із збереженого файлу. Політикою синхронізації диска за замовчуванням є змивання раз на секунду (IIRC), але її можна налаштувати на блокування та запис на кожній команді.
Використання як знімків, так і додаткового журналу, здається, пропонує як довгостроковий підхід " не заперечуй, якщо я пропустим кілька секунд даних", так і більш безпечний, але дорогий додатковий журнал. Redis підтримує кластеризацію з коробки, тому реплікація теж може бути зроблена.
Я використовую налаштування RDB за замовчуванням і зберігаю знімки на віддаленому FTP. Я ще не бачив помилки, яка спричинила втрату даних. Гостра відмова обладнання або перебої з електроживленням, швидше за все, були б, але я розміщений на VPS. Малий шанс, що це станеться :)