Как сохранить работоспособность сервера Redis


83

Я использую redis для поддержки сеанса в приложении nodejs. Я установил сервер redis, и он работает, когда я запускаю redis-server, но когда я закрываю терминал, redis останавливается и не работает. Как сохранить работоспособность сервера Redis после закрытия терминала?

Ответы:


73

Самый простой способ запустить Redis в качестве демона - отредактировать файл конфигурации и изменить следующую строку:

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

Обязательно укажите файл конфигурации в командной строке redis-server при его запуске.

Пример файла конфигурации предоставляется в дистрибутиве Redis.


Я видел, как вы запускаете его как демон, но какую команду вы используете, чтобы запустить его как демон?
Майкл Фендер,

Это зависит от платформы и распределения ОС.
Дидье Специя

следующий результат поиска ниже digitalocean.com/community/tutorials/…
Ник

11
С этим ответом есть несколько проблем: 1) он не сообщает пользователю, где хранится файл конфигурации. 2) Он не говорит, к какой платформе относится этот ответ (если есть разные места для файла конфигурации; по крайней мере, укажите, на какой платформе вы его установили, чтобы получить этот результат) 3) он даже не говорит, какое имя файл конфигурации.
Джордж Стокер,

Ваш ответ дал мне идею, которая решила мою проблему. У меня был установлен daemonizeпараметр «Да», и я пытался сохранить его контейнер Docker с помощью, -D FOREGROUNDно он не работал, и контейнер выходил. Я избавился от этой опции и daemonizeснова изменил ее на нет, и это сработало, контейнер остается живым.
Стефан

194

И, если вы хотите, быстрый вариант, запустите: redis-server --daemonize yes.


2
могу я спросить, в чем разница между этим и redis-server &?
Удусе,

4
@Uduse Если вы запустите его с помощью &в конце, то при выходе из терминала процесс сервера будет убит. stackoverflow.com/a/15595391/6263317
Джон Дитон

1
@JonDeaton, спасибо за объяснение, но как насчет использования nohup redis-server &vs redis-server --daemonize? Я имею в виду, кажется, что есть способ достичь той же функциональности без использования, --daemonizeи эта опция на самом деле не нужна.
Удусе

22

Как упоминал @DidierSpezia в своем ответе,

Устанавливается daemonize yesв файле конфигурации Redis. Установите daemonize yesв файле конфигурации Redis в /path/to/redis.confКак правило, он должен быть там в/etc/ .

И :

Затем запустите redis-server с файлом conf в качестве аргумента:

./redis-server /etc/redis.conf

ОБНОВЛЕНИЕ Вы также можете напрямую запустить redis с demonizeфлагом

redis-server --daemonize yes

-1

В Linux я не уверен в окнах. Используйте nohup для запуска redis в фоновом режиме. Чтобы запустить redis в фоновом режиме с помощью nohup

  1. перейдите в каталог redis src, в моем случае это / opt / redis-stable / src
  2. запустить командуnohup ./redis-server &
  3. теперь Redis запущен в фоновом режиме
  4. теперь нажмите ctrl + c для выхода, и журналы будут распечатаны в файл nohup.out, вы можете отслеживать то же самое для мониторинга
  5. используйте tail -f nohup.out, чтобы увидеть журналы Redis

@domdambrogia при использовании Nohup не выйдет, он будет работать в фоновом режиме. Проверьте логи на nohup.out
Мохаммед Ирфан Тирупаттур

1
Вы правы, я просто прочитал встроенный код амперсанда без остальной части вашего ответа. Я удалю свой комментарий!
domdambrogia

@MohammedIrfanTirupattur: Но это не запускает его, как знает демон! его убивают, когда терминал закрывается
Аариш Рамеш

@AarishRamesh нет, это не так .. Он будет работать в фоновом режиме, не забудьте использовать амперсанд, а также вы можете проверить логи из nohup.log в текущем каталоге
Мохаммед Ирфан Тирупаттур
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.