MongoDB 缓存或不使用 Redis 缓存

use*_*934 3 caching mongodb redis mongodb-query spring-data-redis

在我的项目中,主数据库是 mongodb,为了缓存,我有 redis。现在,对于长且更复杂的查询,我使用 redis 来缓存它们显然更好。

但我想知道是否应该缓存简单的查询,例如按 id 查找,或按其他 mongodb 索引字段查找?使用 redis 进行这种索引查找有意义吗?

或者我应该不缓存这种查询,因为 mongodb 内部已经有很好的缓存机制?

查找 mongodb 索引字段更快还是查找 redis 更快?

Ami*_*aei 5

  1. Redis 中的查找肯定更快(因为 Redis 的键值性质)。

  2. MongoDB 无法缓存查询结果

MongoDB 是一个数据库,无法为您缓存查询结果,因为数据可能随时发生变化。因此管理缓存是开发人员的责任

而且 MongoDB 也有一些良好的内部机制来使用 RAM 以获得更好的性能。(查看问题以获取更多信息)

  1. 数据库查询是昂贵的

当您在 MongoDB 中执行查询时,即使是简单的查询,也会有许多过程来查找数据。但是 Redis 可以非常非常快地找到密钥。因此很明显,您必须使用Redis 来保存内容,而仅使用MongoDB 来进行永久存储和查询

我的建议:

建议将任何高使用率繁重查询的结果缓存在 Redis、Memcached 或其他键值内存存储中。(每天在数据库/MongoDB中查找一个简单的帖子一千次是没有意义的。这只是浪费资源。缓存系统的首要职责是让高使用率的数据更接近)

另外注意你必须有一个良好的“缓存失效”机制来更新Redis中的缓存数据。

我建议使用直写技术将模型和数据保存在 Redis 中。

我希望这有帮助。