Я понимаю, что Redis обслуживает все данные из памяти, но сохраняется ли это также при перезагрузке сервера, чтобы при перезагрузке сервера он считывал в память все данные с диска. Или это всегда пустое хранилище, предназначенное только для хранения данных, пока приложения работают без сохранения?
122
Ответы:
Предлагаю вам прочитать об этом на http://redis.io/topics/persistence . По сути, вы теряете гарантированное постоянство, когда увеличиваете производительность, используя только хранение в памяти. Представьте сценарий, в котором вы ВСТАВЛЯЕТЕ в память, но прежде, чем она сохранится на диске, теряет мощность. Будет потеря данных.
Redis поддерживает так называемые «снимки». Это означает, что он будет делать полную копию того, что находится в памяти в определенные моменты времени (например, каждый полный час). Когда вы теряете питание между двумя снимками, вы теряете данные за время между последним снимком и падением (не обязательно отключение электроэнергии ..). Redis торгует безопасностью данных и производительностью, как и большинство NoSQL-DB.
Большинство баз данных NoSQL придерживаются концепции репликации между несколькими узлами, чтобы минимизировать этот риск. Redis считается скорее быстрым кешем, чем базой данных, которая гарантирует согласованность данных. Поэтому его варианты использования обычно отличаются от реальных баз данных: вы можете, например, хранить сеансы, счетчики производительности или что-то еще с непревзойденной производительностью и без реальных потерь в случае сбоя. Но обработка заказов / истории покупок и т. Д. Считается делом для традиционных баз данных.
источник
Сервер Redis время от времени сохраняет все свои данные на жесткий диск, обеспечивая таким образом определенный уровень устойчивости.
Он сохраняет данные в одном из следующих случаев:
BGSAVE
командуНо данные в Redis не являются постоянными, потому что:
BGSAVE
операция может быть выполнена только в том случае, если у вас достаточно свободной оперативной памяти (объем дополнительной оперативной памяти равен размеру Redis DB)NB:
BGSAVE
потребность в ОЗУ является реальной проблемой, потому что redis продолжает работать до тех пор, пока не останется ОЗУ для запуска, но он прекращает сохранять данные на жесткий диск намного раньше (примерно при 50% ОЗУ).Для получения дополнительной информации см. Redis Persistence .
источник
Это вопрос конфигурации. У вас может быть полное или частичное сохранение ваших данных в Redis. Лучшее решение будет обусловлено техническими и бизнес-потребностями проекта.
Согласно документации Redis о персистентности, вы можете настроить свой экземпляр для сохранения данных на диск время от времени или по каждому запросу, в двух словах. Они предоставляют две стратегии / метода AOF и RDB (прочтите документацию, чтобы узнать подробности о них), вы можете использовать каждый отдельно или вместе.
Если вам нужна «стойкость в стиле SQL», они сказали:
источник
Обычно ответ - да , однако более полный ответ действительно зависит от того, какой тип данных вы пытаетесь сохранить. В общем, более полный краткий ответ:
Сказав это, по умолчанию Redis будет сохранять моментальные снимки данных с периодическим интервалом (очевидно, это происходит каждые 1 минуту, но я не проверял это - это описано в статье ниже, которая является хорошим базовым вступлением):
http://qnimate.com/redis-permanent-storage/
TL; DR
Из официальных документов :
Redis должен быть явно настроен для сохранения AOF, если это необходимо, и это приведет к снижению производительности, а также увеличению количества журналов. Этого может быть достаточно для относительно надежного сохранения ограниченного объема потока данных.
источник
Вы можете вообще отказаться от постоянства. Лучшая производительность, но все данные теряются при завершении работы Redis.
Redis имеет два механизма сохранения: RDB и AOF. RDB использует глобальный снимок состояния планировщика, а AOF записывает обновление в файл журнала только для apappend, аналогичный MySql.
Вы можете использовать один из них или оба. Когда Redis перезагружается, он создает данные из чтения файла RDB или файла AOF.
источник