mongodb - 使用 mongodb 和 redis 的缓存失效策略

标签 mongodb caching redis

我使用 mongodb 为我的应用程序构建了一个 redis 缓存层。 我担心缓存失效,因为更新命令可以通过各种方式提交给 mongodb,例如通过 ID、代码、名称等更新

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

我已经尝试使用 mongodb 的“流更改”功能来驱逐缓存,但由于 mongodb 为每个更改流打开新连接(更喜欢这个 issue),我得到了性能下降

例如:

  1. 我在 redis 中缓存了 id = 1 的订单 {id:1, code:2, user:3}
  2. 当应用更新所有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/

相关文章:

mysql - 每次用户访问页面时,DjangoCMS 都会打开数据库连接吗?

node.js - 多 channel 取决于路径与nodejs和redis

java - 何时使用 MongoDB Driver/Morphia 而不是 Hibernate

python - pymongo 中的 Tailable 游标似乎已停止工作

java - Spring 在运行时缓存 : Enable/Disable Cache via application. 属性

javascript - 新版本上的 Workbox 更新缓存

python - 为应用程序编写单元测试的模拟 redis

redis - Redis 在 Trello 中是如何使用的?

php - 如何创造条件上的 Eloquent 模式? (拉拉维尔 5.3)

java - 获取 JSON 作为输入时出现 MongoDB NULL 指针异常