使用Redis的MongoDB缓存或不缓存

时间:2020-01-04 03:13:16

标签: mongodb caching redis mongodb-query spring-data-redis

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

但是我想知道我是否应该缓存简单的查询,例如按ID查找或按其他MongoDB索引字段查找?将redis用于这种索引查找是否有意义?

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

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

1 个答案:

答案 0 :(得分:2)

  1. Redis中的查找绝对快(由于Redis的键值性质)。

  2. MongoDB无法缓存查询结果

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

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

  1. 数据库查询非常昂贵

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

我的推荐:

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

还请注意,您必须具有良好的“ cache invalidation”机制来更新Redis中的缓存数据。

我建议使用write-through 技术将模型和数据保留在Redis中。

希望获得帮助。