在我的项目中,主数据库是mongodb,为了进行缓存,我有redis。 现在,对于较长且更复杂的查询,使用redis缓存它们显然更好。
但是我想知道我是否应该缓存简单的查询,例如按ID查找或按其他MongoDB索引字段查找?将redis用于这种索引查找是否有意义?
还是我不应该缓存这种查询,因为mongodb内部已经具有良好的缓存机制?
查找mongodb索引字段的速度更快还是查找redis的速度更快?
答案 0 :(得分:2)
Redis中的查找绝对快(由于Redis的键值性质)。
MongoDB无法缓存查询结果:
MongoDb是一个数据库,无法为您缓存查询结果。因为数据可能随时更改。 因此,管理缓存是开发人员的责任。
但是MongoDB也有一些很好的内部机制来使用RAM以获得更好的性能。(请查看this问题以获取更多信息)
在MongoDB中执行查询时,即使进行简单查询,也会有很多过程来查找数据。但是Redis可以非常快速地找到密钥。因此很明显,您必须使用 Redis保留内容,并且仅将 MongoDB用于永久性存储和查询。
我的推荐:
建议在Redis,Memcached或任何其他键值内存存储中缓存任何高使用或繁重查询的结果。 (每天在数据库/ MongoDB中查找数千条简单的帖子是没有意义的。这只是浪费资源。Cache系统的首要职责是保持高可用性数据更近)
还请注意,您必须具有良好的“ cache invalidation”机制来更新Redis中的缓存数据。
我建议使用write-through 技术将模型和数据保留在Redis中。
希望获得帮助。