您可以将数据插入 Redis 副本吗?为什么或者为什么不?

Can you insert data into a Redis replica? Why or why not?

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

但是,此脚本还尝试使用 SET 插入数据。不知道插入成功没有。

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

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

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

Does it pass your SET command up to the primary redis-server instance?

没有

Does it keep your data but only locally?

视情况而定。

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

Does it just ignore your SET command?

没有。它要么接受它,要么拒绝它,然后 returns 一个错误回复。