问题标签 [durability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

redis - 使用从属 redis 队列使 redis 持久化

也许我错过了一些东西,这似乎太简单了。是否可以通过让主 redis 节点将数据复制到从 redis 节点来使 redis 持久化?

我的情况是,我有一个 REST 端点,它在收到来自客户端的请求后,会将有效负载粘贴到 redis 队列中,然后向客户端返回成功(HTTP 200)。如果该队列在消息处理之前和 fsync 发生之前发生故障,我已经丢失了该有效负载并且没有人知道它。

我想知道,如果我可以简单地写入两个 redis 队列(在不同的区域中),一个是主队列,一个是从属队列。当我写入“主”时,redis 将自动在从属队列中写入相同的元素,然后端点才会向客户端返回 HTTP 200。

这可能吗?Redis 将 (i) 需要一种写入从属设备的方法,并且 (ii) 具有同步 API 或可等待 API,只有在确认有效负载已写入主服务器和从服务器时才会返回。这里的关键是redis让调用者知道slave已经收到了事件。

如果客户端没有收到 HTTP 200,他们知道应该再次尝试发送。感觉有一些我没有看到的警告。

谢谢