关闭Redis

关闭Redis,redis,Redis,今天我第一次在本地机器上启动了Redis,然后在关闭Rails应用程序后关闭了所有终端窗口。一小时后,我再次启动Rails应用程序,并执行以下操作来启动redis服务器 redis-server /usr/local/etc/redis.conf 然而,它告诉我 # Opening port 6379: bind: Address already in use 因此,即使我关闭了Mac上的终端窗口,我还是认为它仍在运行早期的实例 看着这页,我试着跑 SHUTDOWN 在终端窗口中,但我得到

今天我第一次在本地机器上启动了Redis,然后在关闭Rails应用程序后关闭了所有终端窗口。一小时后,我再次启动Rails应用程序,并执行以下操作来启动redis服务器

redis-server /usr/local/etc/redis.conf
然而,它告诉我

# Opening port 6379: bind: Address already in use
因此,即使我关闭了Mac上的终端窗口,我还是认为它仍在运行早期的实例

看着这页,我试着跑

SHUTDOWN
在终端窗口中,但我得到了这个响应

SHUTDOWN: NOT super-user
因此我尝试了(尽管我没有使用sudo启动它)

在它询问我的密码后,它输出这个

usage: shutdown [-] [-h [-u] [-n] | -r [-n] | -s | -k] time [warning-message ...]
但是当我随机运行
shutdown-s
时,它说

 SHUTDOWN: NOT super-user

当我关闭我的应用程序时,关闭Redis的正确方法是什么?

这是作为命令发送给Redis的,而不是在你的终端上执行

在这种情况下,您实际上可以从终端上关闭redis,因为一旦收到
SIGTERM
信号,它将计划关闭,而不是简单地退出


参考

使用内置的redis客户端:
redis cli shutdown
查找计算机上运行的redis实例的进程id

> ps aux | grep redis

impadmin 23277  0.0  0.0  35044  1976 pts/2    Sl+  14:19   0:00 src/redis-server
。。。然后运行:

> kill 23277

实际上,运行'kill'会给我这个kill:用法:kill[-s sigspec |-n signum |-sigspec]pid | jobspec。。。或者kill-l[sigspec]您需要提供要kill的进程ID,以便它知道在哪里发送SIGTERM信号。看看这个:好的,对于任何看到这个答案的人来说,我通过执行'redis cli info | grep process _id'获得进程id,然后运行'kill 2694'“ps aux | grep redis”是正常的方式,仅供参考:)如何告诉ps包含列标题?应该是最重要的答案。嘿,我15分钟前无意中否决了你的问题。我刚刚意识到这一点,但我无法撤销它。如果你编辑它,我想我可以撤销它。我真的非常抱歉。我尝试了这种方法,但一直注意到我的
redis服务器
进程出于某种原因不断更改其PID。。。因此,每次我运行
ps aux | grep redis
时,显示的PID将不同于上次运行的
ps aux | grep redis
。最终,redis cli关闭是我想要的。
> kill 23277