Як підтримувати роботу сервера 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.


Я бачив, як ви запускаєте його як демон, але тоді яку команду ви використовуєте для запуску як демон?
Michael Fender

Це залежить від платформи та розподілу ОС.
Didier Spezia

наступний результат пошуку вниз 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, він не вийде, він працюватиме у фоновому режимі. Перевірте журнали на журнали
Мохаммед Ірфан Тіруппатур

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

@MohammedIrfanTirupattur: Але це не запускає його, як демон знає! його вбивають, коли термінал закритий
Ааріш Рамеш

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