database - 您可以将数据插入 Redis 副本吗?为什么或者为什么不?
问题描述
我有一个 redis-server 实例,它是主 redis-server 实例的副本。我还有一个 python3 脚本,它使用 redis 库来查询副本实例。
但是,此脚本也尝试使用 SET 插入数据。我不确定它是否成功插入。
在副本上使用 SET 会发生什么?我的理解是replica应该复制redis-server实例的数据,所以我只能想象三种可能的行为
- 它是否将您的 SET 命令传递给主 redis-server 实例?
- 它是否保留您的数据但只保留在本地?
- 它只是忽略您的 SET 命令吗?
我找不到关于这个问题的任何文档,而且这三种行为似乎都是合理的。如果您知道行为是什么,您能否解释一下为什么会出现这种情况,而不是其他两种情况?
解决方案
它是否将您的 SET 命令传递给主 redis-server 实例?
不
它是否保留您的数据但只保留在本地?
这取决于。
- 如果您的副本配置为
replica-read-only yes
,它将接受写入操作,并将数据保存在本地。但是,当与 master 同步时,master 的副本会覆盖它。 - 如果您的副本配置为
replica-read-only no
,它将拒绝写入操作。
它只是忽略您的 SET 命令吗?
不。它要么接受它,要么拒绝它并返回一个错误回复。
推荐阅读
- r - 在智能手机上使用,闪亮的交互式情节无法理解手指动作
- node.js - 我是否必须使用与创建重定向 URL 相同的 oAuth2Client 来调用谷歌日历 API,或者我可以使用新实例吗
- gremlin - 只运行一次sideEffect
- php - TYPO3 SURF - 部署非 TYPO3 项目
- node.js - 无法使用 sequelize 仅返回嵌套模型属性
- azure - 如何在同一发布管道中的任务之间共享相同的 Azure 服务连接
- python - 如何简单地导入文件
- inkscape - 如何在 Inkscape 中定义 .inx 参数的最大值以依赖于其他参数
- java - 使用套接字来自服务器的实时数据
- asp.net - 在 Aspx 页面中使用 Angular