ВЫКЛЮЧЕНИЕ [NOSAVE | SAVE]

Поведение команды следующее:

  • Остановить всех клиентов.
  • Выполнить блокирующее СОХРАНИТЬ, если настроена по крайней мере одна точка сохранения .
  • Очистить файл только для добавления, если включен AOF.
  • Закройте сервер.

Если включено постоянное хранение, эта команда гарантирует, что Redis выключен без потери каких-либо данных. Это не гарантируется, если клиент использует просто СОХРАНИТЬ, а затем ВЫЙТИ, потому что другие клиенты могут изменять данные БД между двумя командами.

Примечание. Экземпляр Redis, настроенный так, чтобы он не сохранялся на диске (нет Настроенный AOF или директива save) не будут сбрасывать файл RDB при SHUTDOWN, поскольку обычно вы не хотите, чтобы экземпляры Redis, используемые только для кеширования, блокировались при завершении работы.

* SAVE и Модификаторы NOSAVE

Можно указать необязательный модификатор для изменения поведения команды. В частности:

  • SHUTDOWN SAVE принудительно выполнит операцию сохранения БД, даже если точки сохранения не настроены.
  • SHUTDOWN NOSAVE предотвратит операцию сохранения БД, даже если настроена одна или несколько точек сохранения. (Вы можете думать об этом варианте как о гипотетической команде ABORT , которая просто останавливает сервер).

* Условия, при которых не удается выполнить SHUTDOWN

Когда включен файл только для добавления, завершение работы может завершиться ошибкой, потому что система находится в состоянии, которое не позволяет немедленно безопасно сохраниться на диске.

Обычно, если есть AOF дочерний процесс, выполняющий перезапись AOF, Redis просто убьет его и выйдет. Однако есть два условия, при которых это небезопасно, и вместо этого команда SHUTDOWN будет отклонена с ошибкой. Это происходит, когда:

  • Пользователь только что включил AOF, и сервер запустил первую перезапись AOF, чтобы создать начальный файл AOF. В этом контексте остановка приведет к полной потере набора данных: после перезапуска на сервере потенциально будет включен AOF без какого-либо файла AOF вообще.
  • Реплика с включенным AOF, повторно подключенная к своему master, выполнил полную ресинхронизацию и перезапустил файл AOF, запустив начальный процесс создания AOF. В этом случае невыполнение перезаписи AOF опасно, поскольку последний набор данных, полученный от мастера, будет потерян. Новый главный сервер может быть даже другим экземпляром (если для перенастройки реплики использовалась команда REPLICAOF или SLAVEOF ), поэтому важно завершить перезапись AOF и начать с правильного набора данных, представляющего набор данных в памяти, когда сервер был завершен.

Существуют условия, когда мы хотим просто завершить работу экземпляра Redis как можно скорее, независимо от его содержания. В таком случае правильная комбинация команд — это отправить CONFIG, добавление только no , за которым следует SHUTDOWN NOSAVE . Первая команда отключит AOF, если необходимо, и завершит перезапись дочернего элемента AOF, если он активен. У второй команды не возникнет проблем с выполнением, поскольку AOF больше не включен.

* Возвращаемое значение

Простой строковый ответ при ошибке. В случае успеха ничего не возвращается, поскольку сервер завершает работу и соединение закрывается.

Оцените статью
techsly.ru
Добавить комментарий