为什么redis slave中的PUBLISH命令不会导致错误?
Why PUBLISH command in redis slave causes no error?
我有一个redis master-slave 设置,slave 的配置设置为slave_read_only:1
,但是当我在slave 节点上输入PUBLISH 命令时,它并没有失败。我预计会出现错误,但它只接受命令而没有其他任何事情发生。消息也不会传播到主服务器。
问题是,这是为什么呢?我是否错误配置了redis?那是一个功能吗?为了什么目的?或者这只是一个错误?
问题出现在发生自动故障转移的设置中。一个 master 可能成为一个 slave,而那个 slave 的客户可能会在没有意识到它不再是 master 的情况下发布消息。是不是每条消息发送前都要检查redis节点是否还是master?
我用的是redis 3.0.5
您没有配置错误 - 这是定义的行为,因为 PUBLISH
不被视为写入命令。
另请注意,当复制已发布的事件时,会从主服务器复制到从服务器(下游,像往常一样),因此如果您要发布到从服务器,则只有连接到它或它的从服务器并订阅相关频道的客户端将收到消息。
我有一个redis master-slave 设置,slave 的配置设置为slave_read_only:1
,但是当我在slave 节点上输入PUBLISH 命令时,它并没有失败。我预计会出现错误,但它只接受命令而没有其他任何事情发生。消息也不会传播到主服务器。
问题是,这是为什么呢?我是否错误配置了redis?那是一个功能吗?为了什么目的?或者这只是一个错误?
问题出现在发生自动故障转移的设置中。一个 master 可能成为一个 slave,而那个 slave 的客户可能会在没有意识到它不再是 master 的情况下发布消息。是不是每条消息发送前都要检查redis节点是否还是master?
我用的是redis 3.0.5
您没有配置错误 - 这是定义的行为,因为 PUBLISH
不被视为写入命令。
另请注意,当复制已发布的事件时,会从主服务器复制到从服务器(下游,像往常一样),因此如果您要发布到从服务器,则只有连接到它或它的从服务器并订阅相关频道的客户端将收到消息。