为啥 Redis 会允许客户端关闭服务器?

Posted

技术标签:

【中文标题】为啥 Redis 会允许客户端关闭服务器?【英文标题】:Why would Redis allow client to shutdown server?为什么 Redis 会允许客户端关闭服务器? 【发布时间】:2019-09-01 06:03:45 【问题描述】:

我在我的电脑上安装了redis,打开了1个redis-server和2个redis-cli。如果我在第一个 redis-cli 终端中键入“shutdown save”命令,它将关闭服务器和第一个 redis-cli。然后,第二个 redis-cli 将无法再与 redis-server 通信,因为它已被另一个 redis-cli 关闭。 这对我来说毫无意义。 IMO,服务器是独立服务,应始终运行。客户端应该能够连接/断开与服务器的连接,但永远不能禁用服务器。为什么 Redis 允许客户端禁用可以由许多其他客户端共享的服务器?考虑一下,如果redis服务器在远程机器上,而redis客户端在其他机器上,如果其中一个客户端关闭远程服务器,那么所有其他客户端都会受到影响,这不是很危险吗?

【问题讨论】:

【参考方案1】:

如果您不希望客户端执行SHUTDOWN 命令(或任何其他命令),您可以使用rename-command 配置指令。

从即将发布的 Redis v6 开始,ACL 有望提供对管理员和应用程序命令的更好控制。

【讨论】:

【参考方案2】:

不,我认为你弄错了。允许/禁止远程服务器上的某些特定操作是应用程序的责任。您可以简单地禁止某些命令,以便单个 cli 无法关闭 redis-server。

【讨论】:

以上是关于为啥 Redis 会允许客户端关闭服务器?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在关闭客户端套接字时,他的进程会更改状态“Z”(僵尸)?

redis连接关闭服务端和客户端

linux的.service服务开机自启动后为啥会自动停止

为啥我们需要客户端和服务器端验证? [关闭]

为啥当客户端关闭连接时我的简单 C 服务器退出?

为啥我的 TCP 服务器套接字在一个客户端断开连接后关闭?