MongoDB作为MySQL缓存

Ser*_*sky 1 php mysql caching mongodb redis

我只是有了这个想法,并认为这是一个很好的解决方案,但我问这个方法是否有一些缺点.我有一个经常查询数据库的网页,每页加载3-5个查询.每个查询都会进行十几个(字面上的)连接,然后每个查询结果都用于另一个查询来构造PHP对象.毋庸置疑,即使在云端,加载时间也是荒谬的,但它现在的工作方式.

我想过将已经构造的对象存储为JSON,或者是MongoDB - BSON格式.将MongoDB用作此类缓存引擎会是一个很好的解决方案吗?以下是我认为它将如何工作的示例:

  1. 当用户打开页面时,如果Mongo中没有具有正确ID的数据,则对MySQL的查询将触发,每个返回的数据都将转换为正确构造的对象.该对象被发送到视图并转换为JSON并保存在Mongo中.
  2. 如果Mongo中有相应ID的数据,则会将其发送给PHP并进行转换.
  3. 当MySQL中的某些数据发生变化(管理员编辑/删除内容)时,将触发删除功能,该功能将删除MongoDB中已编辑/删除的对象.

这是使用MongoDB的好方法吗?这种方法的缺点是什么?使用Redis完成此任务更好吗?我还需要NoSQL用于项目的其他元素,这就是我考虑使用这两个中的一个而不是memcache的原因.

MongoDB作为MySQL的频繁连接和查询的缓存有一些信息,但它完全无关紧要.

kok*_*okx 7

我认为你最好使用memcached或Redis来缓存查询结果.MongoDB更像是一个完整的数据库,而不是一个缓存.memcached和Redis都针对缓存进行了优化.

但是,您可以将缓存实现为两级缓存.例如,Memcached不保证数据将保留在缓存中.(当存储空间满时,它可能会使数据失效).这使得很难为标记实现系统(例如,您为MySQL表添加标记,然后您可以触发与该表关联的所有查询结果的到期).一个常见的解决方案是使用memcached进行缓存,以及第二个更慢但更可靠的缓存,它应该比MySQL更快.MongoDB可能是一个很好的候选者(只要你可以简单地保持对MongoDB的查询).