使用mongodb和redis的缓存无效策略

时间:2019-01-23 08:15:39

标签: mongodb caching redis

我已经使用mongodb为我的应用程序构建了Redis缓存层。 我担心缓存失效,因为update命令可以通过各种方式提交给mongodb,例如通过id,代码,名称...等进行更新

我们如何找到相关的缓存资源以进行相应的更新?

我已经尝试过使用mongodb的“流更改”功能来驱逐缓存,但是由于mongodb为每个更改流打开新连接(因此,请参考issue),导致性能下降/ p>

例如:

  1. 我在Redis中缓存ID = 1的订单{id:1,code:2,user:3}
  2. 当应用程序使用user = 3更新所有订单时,我们如何知道要在redis中更新相应的订单

1 个答案:

答案 0 :(得分:1)

1 /无论是通过代码和mongodb驱动程序完成CRUD操作的一部分,redis操作都是快速的,并且不会严重影响性能。因此,只要您在代码中执行mongodb操作,就可以使Redis结构无效或修改。

2 /如果您想保持系统独立性,我建议您通过 debezium 收听收集和文档更改,该更改会将更改事件发布到Kafka主题中。 kafka主题的使用者可以读取事件并相应地修改缓存。 https://debezium.io/docs/connectors/mongodb/