首页 > 解决方案 > 您可以将数据插入 Redis 副本吗?为什么或者为什么不?

问题描述

我有一个 redis-server 实例,它是主 redis-server 实例的副本。我还有一个 python3 脚本,它使用 redis 库来查询副本实例。

但是,此脚本也尝试使用 SET 插入数据。我不确定它是否成功插入。

在副本上使用 SET 会发生什么?我的理解是replica应该复制redis-server实例的数据,所以我只能想象三种可能的行为

  1. 它是否将您的 SET 命令传递给主 redis-server 实例?
  2. 它是否保留您的数据但只保留在本地?
  3. 它只是忽略您的 SET 命令吗?

我找不到关于这个问题的任何文档,而且这三种行为似乎都是合理的。如果您知道行为是什么,您能否解释一下为什么会出现这种情况,而不是其他两种情况?

标签: databaserediscopyreplicationmaster-slave

解决方案


它是否将您的 SET 命令传递给主 redis-server 实例?

它是否保留您的数据但只保留在本地?

这取决于。

  • 如果您的副本配置为replica-read-only yes,它将接受写入操作,并将数据保存在本地。但是,当与 master 同步时,master 的副本会覆盖它。
  • 如果您的副本配置为replica-read-only no,它将拒绝写入操作。

它只是忽略您的 SET 命令吗?

不。它要么接受它,要么拒绝它并返回一个错误回复。


推荐阅读