Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保持redis服务器运行_Redis - Fatal编程技术网

如何保持redis服务器运行

如何保持redis服务器运行,redis,Redis,我在nodejs应用程序中使用redis进行会话支持。我已经安装了redis server,当我运行redis server时它可以工作,但当我关闭终端时,redis停止工作。如何在关闭终端后保持redis server运行?将redis作为守护进程启动的最简单方法是编辑配置文件并更改以下行: # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a

我在nodejs应用程序中使用redis进行会话支持。我已经安装了redis server,当我运行redis server时它可以工作,但当我关闭终端时,redis停止工作。如何在关闭终端后保持redis server运行?

将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在回答中提到的

在Redis conf文件中设置
daemonize yes
。 通常在Redis conf文件的
/path/to/Redis.conf
中设置
daemonize yes
它应该在
/etc/

以及:

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

./redis-server /etc/redis.conf
更新 您也可以使用
demonize
标志直接运行redis

redis-server --daemonize yes

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

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

OP没有提供关于他的设置的任何细节,但是你可以假设它是linux,他没有提到容器,所以你也可以假设他运行的redis没有容器

有三个细节使得被接受的答案成为一件容易忘记的事情

  • 大多数(流行的)发行版默认附带systemd
  • 大多数(流行的)发行版的官方回购协议中都有redis
  • 该官方redis软件包为redis安装systemd服务
所以

  • 它的默认配置中将有
    受监控的系统D
  • 要启动:使用
    sudo systemctl start启动redis守护进程redis@instanceName
    替换“instanceName”的位置。同时
    sudo系统控制激活redis@instanceName
    用于启动时自动启动。(顺便说一句,忘了
    服务启动
    ,以及初始化脚本吧!现在它们的可移植性比直接调用
    systemctl
    要差)
  • 不要设置为
    daemonize:yes
    ,这将干扰systemd监视redis
Systemd将监督并重新启动您的redis,您可以为其设置服务依赖项和服务先决条件,即使对于自定义可执行文件,搜索Systemd单位文件也不难(您需要一个10行的配置文件)。很可能你会想要的


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

我看到这是作为守护进程运行它的方式,但是,作为守护进程,您使用什么命令来运行它呢?这取决于平台和操作系统发行版。下一个搜索结果是,这个答案有几个问题:1)它没有告诉用户配置文件存储在哪里。2) 它没有说这个答案适用于哪个平台(如果配置文件有不同的位置;至少提供您在哪个平台下安装它以获得此结果)3)它甚至没有说配置文件的名称。您的回答给了我一个想法,解决了我的问题。我将
daemonize
选项设置为yes,并试图使用
-D前台保持Docker容器的活动状态,但它不工作,容器正在退出。我去掉了这个选项,将
daemonize
选项改回了no,它成功了,容器保持了活动状态。请问这与
redis server&
有什么区别?@Uduse如果最后用
&
运行它,那么当您退出终端时,服务器进程将被终止@JonDeaton感谢您的解释,但是使用nohup redis server&
vs
redis server--daemonize
怎么样?我的意思是,似乎有一种方法可以实现相同的功能,而不必使用
--daemonize
,而实际上并不需要这个选项。