Подтвердить что ты не робот

Сохраняет ли Redis данные?

Я понимаю, что Redis обслуживает все данные из памяти, но он сохраняется и при перезагрузке сервера, поэтому, когда сервер перезагружается, он считывает в память все данные с диска. Или это всегда пустой магазин, который предназначен для хранения данных во время работы приложений без настойчивости?

4b9b3361

Ответ 1

Я предлагаю вам прочитать об этом на http://redis.io/topics/persistence. В основном вы теряете гарантированное постоянство, когда увеличиваете производительность, используя только хранение в памяти. Представьте себе сценарий, в который вы вставляете в память, но до того, как он останется на диске, потеряет силу. Будет потеря данных.

Redis поддерживает так называемые "моментальные снимки". Это означает, что он будет делать полную копию данных в памяти в определенные моменты времени (например, каждый полный час). Когда вы теряете власть между двумя моментальными снимками, вы теряете данные со времени между последним снимком и сбоем (не обязательно отключать питание..). Redis торгует безопасностью данных по сравнению с производительностью, как и большинство NoSQL-DB.

Большинство баз данных NoSQL следуют концепции репликации между несколькими узлами, чтобы минимизировать этот риск. Redis считается более быстрым кешем вместо базы данных, которая гарантирует согласованность данных. Поэтому его варианты использования обычно отличаются от используемых в реальных базах данных: Например, вы можете хранить сеансы, счетчики производительности или что-то в нем с непревзойденной производительностью и без реальной потери в случае сбоя. Но обработка заказов/истории покупок и т.д. Рассматривается как работа для традиционных баз данных.

Ответ 2

Сервер Redis время от времени сохраняет все свои данные на HDD, тем самым обеспечивая некоторый уровень настойчивости.

Он сохранил данные в одном из следующих случаев:

  • автоматически время от времени
  • при вызове вручную BGSAVE команда
  • когда redis выключается

Но данные в redis не очень устойчивы, потому что:

  • авария процесса redis означает потерю всех изменений с момента последнего сохранения Операция
  • BGSAVE может быть выполнена только в том случае, если у вас достаточно свободной ОЗУ (объем дополнительной ОЗУ равен размеру redis DB).

NB: BGSAVE Требование к ОЗУ - настоящая проблема, поскольку redis продолжает работать до тех пор, пока не будет больше оперативной памяти, но она перестанет записывать данные на жесткий диск намного раньше (при приближении 50% оперативной памяти).

Для получения дополнительной информации см. Redis Persistence.