我在 nodejs 应用程序中使用 redis 来支持会话。我已经安装了 redis 服务器,当我运行 redis-server 时它可以工作,但是当我关闭终端时,redis 停止并且不起作用。关闭终端后如何保持redis服务器运行?
4 回答
而且,如果您想要一个快速的选项,请运行:redis-server --daemonize yes
。
将 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 发行版中提供了配置文件的示例。
正如@DidierSpezia 在他的回答中提到的,
daemonize yes
在 Redis conf 文件中设置。daemonize yes
在 Redis conf 文件中设置,/path/to/redis.conf
通常它应该在/etc/
.
和 :
然后以 conf 文件作为参数触发 redis-server:
./redis-server /etc/redis.conf
更新demonize
您也可以直接运行带有标志
的redis
redis-server --daemonize yes
接受的答案大多是过时的。虽然这个问题很老,但谷歌仍然排名很高,所以请允许我更正一下。
OP 没有提供任何关于他的设置的细节,但你可以假设它是一个 linux,而且他没有提到容器,所以你也可以假设他在没有容器的情况下运行 redis。
三个细节使接受的答案成为忘记的事情
- 大多数(流行)发行版默认带有 systemd
- 大多数(流行的)发行版在其官方存储库中都有 redis
- 该官方redis包为redis安装systemd服务
所以
- 它将
supervised systemd
在其默认配置中 - 开始:redis 守护进程用
sudo systemctl start redis@instanceName
你替换“instanceName”的地方。也sudo systemctl enable redis@instanceName
用于在启动时自动启动。(顺便说一句,已经忘记了service start
和 init 脚本!这些现在比直接调用更不便携systemctl
)。 - 不要设置为,这会干扰 systemd 监督 redis !
daemonize: yes
Systemd 将监督,重新启动您的 redis,并且您可以为其设置服务依赖关系和服务前提条件,即使对于自定义可执行文件也不是那么难,搜索 systemd 单元文件(您需要大约 10 行配置文件) . 很有可能,你会想要的。
如果三个细节(使 systemd 成为正确答案)没有得到满足/不相关,您很可能正在运行 redis 容器化。对于 docker/podman/etc.,这完全是另一个问题......(内部 linux 中没有 systemd,但您必须(或已经这样做)监督(d)容器守护进程本身)