【发布时间】:2013-03-06 21:14:18
【问题描述】:
假设我有一个 Redis 的主从部署(1 个主,1 个从)和一个将管理发布-订阅的客户端 (webapp)。
- 我可以向从站发布消息吗?它们会被主站“看到”吗?
- 或者我应该只使用 Master 来发布和 Slave 来订阅命令?
我一直在四处寻找,但找不到答案。有谁知道吗?
【问题讨论】:
假设我有一个 Redis 的主从部署(1 个主,1 个从)和一个将管理发布-订阅的客户端 (webapp)。
我一直在四处寻找,但找不到答案。有谁知道吗?
【问题讨论】:
编辑:正如@jameshfisher 指出的,下面的链接是关于Redis Cluster 的。 @lionello 的评论似乎是正确答案:
发布到从站不会传播到主站,反之亦然。
答案在 cluster-spec 文档中:
发布/订阅
在 Redis 集群中,客户端可以订阅每个节点,也可以发布到其他每个节点。集群将确保根据需要转发已发布的消息。 当前的实现将简单地将每个发布的消息广播到所有其他节点,但在某些时候,这将使用布隆过滤器或其他算法进行优化。
【讨论】:
对于您存储在 Redis 中的典型数据,您应该只写入主服务器。
来自http://redis.io/topics/replication:
...如果slave和master将[原文如此]重新同步,或者如果slave重新启动...,则[to slaves]写入将被丢弃...
事实上,从 v2.6 开始,您可以将 slave 设置为slave-read-only 模式,这样可以防止错误地向 slave 写入数据。
文档确实继续提到了将数据写入从属设备的潜在用例:
...通常有一些不重要的临时数据可以存储 变成奴隶。例如,客户可能会获取有关 从属实例中主机的可达性以协调故障转移 战略。
【讨论】: