我使用 mongodb 为我的应用程序构建了一个 redis 缓存层。 我担心缓存失效,因为更新命令可以通过各种方式提交给 mongodb,例如通过 ID、代码、名称等更新
我们如何找到相关的缓存资源进行相应的更新?
我已经尝试使用 mongodb 的“流更改”功能来驱逐缓存,但由于 mongodb 为每个更改流打开新连接(更喜欢这个 issue),我得到了性能下降
例如:
- 我在 redis 中缓存了 id = 1 的订单 {id:1, code:2, user:3}
- 当应用更新所有user=3的订单时,我们如何知道更新redis中对应的订单
最佳答案
1/要么让它成为通过代码和 mongodb 驱动程序完成的 CRUD 操作的一部分,redis 操作速度很快,并且不会大幅影响性能。因此,只要您在代码中执行 mongodb 操作,就可以使您的 redis 结构失效或修改。
2/如果您想保持系统独立,我建议通过 debezium 监听集合和文档更改,这会将更改事件发布到 Kafka 主题中。 kafka 主题的消费者可以读取事件并相应地修改缓存。 https://debezium.io/docs/connectors/mongodb/
关于mongodb - 使用 mongodb 和 redis 的缓存失效策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54322686/