【发布时间】:2021-08-21 14:30:19
【问题描述】:
也许我遗漏了一些东西,这似乎太简单了。是否可以通过让主redis节点将数据复制到从属redis节点来使redis持久化?
我的情况是,我有一个 REST 端点,它在收到来自客户端的请求后,会将有效负载粘贴到 redis 队列中,然后向客户端返回成功(HTTP 200)。如果该队列在消息处理之前和 fsync 发生之前发生故障,我已经丢失了该有效负载并且没有人知道它。
我想知道,我是否可以简单地写入两个 redis 队列(在不同的区域),一个是主队列,一个是从属队列。当我写入“主”时,redis 会自动在从属队列中写入相同的元素,然后端点才会向客户端返回 HTTP 200。
这可能吗? Redis 将 (i) 需要一种写入从属设备的方法,并且 (ii) 具有同步 API 或可等待 API,只有在确认有效负载已写入主服务器和从服务器时才会返回。这里的关键是redis让调用者知道slave收到了事件。
如果客户端没有收到 HTTP 200,他们知道应该再次尝试发送。感觉有一些我没有看到的警告。
谢谢
【问题讨论】:
标签: redis queue fault-tolerance durability