如何保持redis服务器运行

Yal*_*ber 70 redis

我在nodejs应用程序中使用redis进行会话支持.我已经安装了redis服务器,它在我运行redis-server时工作,但是当我关闭终端时redis停止并且不起作用.如何让redis服务器永远运行?

lak*_*are 170

而且,如果您想要一个快速选项,请运行:redis-server --daemonize yes.

  • @Uduse如果你最后用`&`运行它,那么当你退出终端时,服务器进程将被终止./sf/answers/1091677401/ (3认同)
  • 请问这个和`redis-server &`有什么区别吗? (2认同)

Did*_*zia 63

将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
Run Code Online (Sandbox Code Playgroud)

确保在启动时在redis-server命令行上提供配置文件.

Redis发行版中提供了配置文件的示例.

  • 这个答案有一些问题:1)它没有告诉用户配置文件的存储位置.2)它没有说明这个答案适用于哪个平台(如果配置文件有不同的位置;至少提供你安装它的平台以获得这个结果)3)它甚至没有说出什么名称配置文件是. (7认同)

tre*_*rex 15

正如@DidierSpezia在他的回答中提到的,

daemonize yes在Redis conf文件中设置.设置daemonize yes在Redis的的conf文件在/path/to/redis.conf一般情况应该是那里/etc/.

而且:

然后使用conf文件作为参数触发redis-server:

./redis-server /etc/redis.conf
Run Code Online (Sandbox Code Playgroud)


Kri*_*egi 9

接受的答案大多已经过时了。虽然这个问题很老了,但谷歌仍然排名很高,所以请允许我纠正这个问题。

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)。
  • 不要设置daemonize: yes,这会干扰 systemd 监控 redis!

Systemd 将监督、重新启动您的 Redis,您可以为其设置服务依赖项和服务先决条件,即使对于自定义可执行文件也不是那么难,搜索 systemd 单元文件(您将需要大约 10 行配置文件) 。很有可能,你会想要它。

如果这三个细节(使 systemd 成为正确答案)不满足/相关,那么您很可能正在运行容器化的 redis。对于docker / podman /等,这完全是另一个问题......(内部linux中没有systemd,但你必须(或已经)监督(d)容器守护进程本身)