首页 > 解决方案 > MongoDB缓存或不缓存使用Redis

问题描述

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

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

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

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

标签: mongodbcachingredismongodb-queryspring-data-redis

解决方案


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

  2. MongoDB 无法缓存查询的结果

MongoDB 是一个数据库,无法为您缓存查询结果,因为数据可能随时更改。所以管理缓存是 Developer 的职责

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

  1. 数据库查询很昂贵

当您在 MongoDB 中执行查询时,将有许多进程来查找数据,即使是简单的查询。但是 Redis 可以非常非常快地找到密钥。所以很明显,你必须使用Redis 来保存东西,而使用MongoDB 只用于永久存储和查询

我的建议:

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

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

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

我希望这有帮助。


推荐阅读