教程 > Redis教程 > Redis 命令 阅读:27

Redis SHUTDOWN 命令

Redis SHUTDOWN 命令

返回 Redis 服务器


Redis SHUTDOWN 命令执行以下操作:

  • 停止所有客户端
  • 如果有至少一个保存点在等待,执行 SAVE 命令
  • 如果 AOF 选项被打开,更新 AOF 文件
  • 关闭 redis 服务器(server)

如果配置了持久化策略,那么这个命令将能够保证在关闭redis服务进程的时候数据不会丢失。

如果仅仅在客户端执行 SAVE 命令,然后 执行 QUIT 命令,那么数据的完整性将不会被保证,因为其他客户端可能在执行这两个命令的期间修改数据库的数据。

注意: 一个没有配置持久化策略的redis实例 (没有aof配置, 没有 “save” 命令) 将不会在执行SHUTDOWN命令的时候转存一个rdb文件,可以提高关闭的速度,例如仅用来做缓存的 redis 不需要配置持久化转存。

语法

redis Shutdown 命令基本语法如下:

redis 127.0.0.1:6379> SHUTDOWN [NOSAVE] [SAVE]

可用版本 >= 1.0.0

返回值

执行失败时返回错误。 执行成功时不返回任何信息,服务器和客户端的连接断开,客户端自动退出。

SHUTDOWN 关闭失败的情况

当配置了 AOF 时,shutdown 可能会失败由于系统处于不允许立刻执行磁盘持久化操纵。

当有一个AOF的子进程在执行AOF重写时,Redis 会简单的kill 该子进程。有两种列外的情况,SHUTDOWN 会返回失败:

  • AOF 刚刚打开,首次进行 AOF rewrite 创建初始的 AOF 文件。这种情况下停止redis将会丢失所有数据:一旦停止 redis时,虽然开启了AOF,但是还没有创建任何AOF文件。
  • 复制节点打开了 AOF,向 master 发起重连,执行数据全同步,然后重起AOF,创建初始AOF文件。可能会丢失复制自master节点的数据。 如果我们只是想立刻关闭redis,而不管其它情况。正确的做法是先发送CONFIG appendonly no ,然后执行SHUTDOWN NOSAVE。前一个命令关闭 AOF(如果打开AOF),终止可能存在的 AOF 重写子进程,这样后一个命令关闭不会失败。

示例

redis 127.0.0.1:6379> PING
PONG

redis 127.0.0.1:6379> SHUTDOWN


$ redis
Could not connect to Redis at: Connection refused
not connected>

返回 Redis 服务器

查看笔记

扫码一下
查看教程更方便