【问题标题】:How to keep redis server running如何保持redis服务器运行
【发布时间】:2013-01-26 20:02:37
【问题描述】:

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

【问题讨论】:

    标签: redis


    【解决方案1】:

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

    【讨论】:

    • 请问这个和redis-server &有什么区别?
    • @Uduse 如果最后使用& 运行它,那么当您退出终端时,服务器进程将被终止。 stackoverflow.com/a/15595391/6263317
    • @JonDeaton 感谢您的解释,但是使用nohup redis-server &redis-server --daemonize 呢?我的意思是,似乎有一些方法可以在不使用 --daemonize 的情况下实现相同的功能,而且这个选项并不是真正需要的。
    【解决方案2】:

    将 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/…
    • 这个答案有几个问题:1)它没有告诉用户配置文件的存储位置。 2)它没有说这个答案适用于哪个平台(如果配置文件有不同的位置;至少提供你安装它的平台以获得这个结果)3)它甚至没有说什么名字配置文件是。
    • 你的回答给了我一个想法,解决了我的问题。我将daemonize 选项设置为yes,并试图通过-D FOREGROUND 保持其Docker 容器的活动状态,但它不工作并且容器正在退出。我去掉了这个选项并将daemonize 选项改回no,它起作用了,容器保持活动状态。
    【解决方案3】:

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

    在 Redis 配置文件中设置 daemonize yes。 在Redis conf文件中设置daemonize yes/path/to/redis.conf一般 它应该在/etc/

    还有:

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

    ./redis-server /etc/redis.conf
    

    更新 你也可以直接运行带有demonize标志的redis

    redis-server --daemonize yes
    

    【讨论】:

      【解决方案4】:

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

      OP 没有提供任何关于他的设置的细节,但你可以假设它是一个 linux,而且他没有提到容器,所以你也可以假设他在没有容器的情况下运行 redis。

      有三个细节让接受的答案很容易忘记

      • 大多数(流行的)发行版默认都带有 systemd
      • 大多数(流行的)发行版在其官方存储库中都有 redis
      • 官方redis包为redis安装systemd服务

      所以

      • 默认配置中有supervised systemd
      • 开始:使用sudo systemctl start redis@instanceName 替换“instanceName”的redis 守护程序。还有sudo systemctl enable redis@instanceName 用于在启动时自动启动。 (顺便说一句,忘记 service start 和 init 脚本吧!现在这些脚本的可移植性不如直接调用 systemctl)。
      • NOT设置为daemonize: yes,这会干扰系统监控redis!

      Systemd 将监督、重新启动您的 redis,并且您可以为其设置服务依赖关系和服务前提条件,即使对于自定义可执行文件也不难,搜索 systemd 单元文件(您需要大约 10 行配置文件)。很有可能,你会想要的。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-15
        • 1970-01-01
        • 2012-08-14
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        相关资源
        最近更新 更多