我在nodejs app中使用redis进行会话支持。我已经安装了redis服务器,它在我运行redis-server时工作,但是当我关闭终端时redis停止并且不起作用。如何让redis服务器永远运行?
答案 0 :(得分:155)
而且,如果您想要一个快速选项,请运行:redis-server --daemonize yes
。
答案 1 :(得分:62)
将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发行版中提供了配置文件的示例。
答案 2 :(得分:15)
正如@DidierSpezia在回答中提到的那样,
在Redis conf文件中设置daemonize yes
。
在daemonize yes
一般在Redis conf文件中设置/path/to/redis.conf
它应该在/etc/
。
并且:
然后使用conf文件作为参数触发redis-server:
./redis-server /etc/redis.conf
答案 3 :(得分:3)
接受的答案大多已经过时。 虽然这个问题很老,但 Google 的排名仍然很高,所以请允许我更正一下。
OP 没有提供关于他的设置的任何细节,但你可以假设它是一个 linux,他没有提到容器,所以你也可以假设他在没有它们的情况下运行 redis。
有三个细节使接受的答案成为一件容易忘记的事情
所以
supervised systemd
sudo systemctl start redis@instanceName
替换“instanceName”的 redis 守护进程。还有 sudo systemctl enable redis@instanceName
用于在启动时自动启动。 (顺便说一句,忘记 service start
和 init 脚本吧!现在这些脚本比直接调用 systemctl
的可移植性要差)。daemonize: yes
,这会干扰 systemd 监督 redis!Systemd 将监督、重启你的 redis,你可以为它设置服务依赖和服务前提条件,即使对于自定义可执行文件也不是那么难,搜索 systemd 单元文件(你需要大约 10 行配置文件)。很有可能,你会想要的。
如果三个细节(使 systemd 成为正确答案)不符合/不相关,则您很可能正在运行 redis 容器化。对于 docker/podman/etc.,这完全是另一个问题......(内部 linux 中没有 systemd,但你必须(或已经这样做)监督(d)容器守护进程本身)
答案 4 :(得分:0)
使用nohup在后台运行Redis。使用nohup在后台运行
nohup ./redis-server &