最小化数据库与缓存的交互

时间:2011-09-26 21:37:43

标签: php mysql zend-framework caching

我在看这个:

http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

这是一种令人惊奇的缓存方式,但它发生在数据库方面,如果有一些PHP代码可以为你做同样的事情,那将会很棒。

我的意思是您将查询发送到该中间层,它会查看您的查询,决定是否需要再次连接到数据库。

有没有人为PHP做过类似的事情?你认为这是个好主意吗?

2 个答案:

答案 0 :(得分:0)

对于任何缓存,重要的是实际的缓存和失效是由同一个应用程序(例如sql-server)完成的。
虽然编写一些客户端查询缓存可能并不困难,但在大多数情况下这绝对没有意义,因为当缓存数据过期时,不会通知(由sql-server)客户端缓存。但实际上查询缓存就是你建议的那个层 由于mysql的查询缓存不了解您的应用程序逻辑,因此必须通过其他条件使缓存无效(例如,表已更改)。如果用作唯一的缓存(特别是在快速变化的表格中),这可能导致性能不佳 因此,您应该在客户端上使用一些与应用程序logik相关的复杂缓存引擎。

答案 1 :(得分:0)

我在http://www.joeyrivera.com/2009/caching-using-phpzend_cache-and-mysql/撰写了一篇博文,其中详细介绍了该主题。它讨论了为什么要缓存以及如何使用zend缓存实现缓存。与db通信通常很慢,因此您应该尽可能地缓存。缓存到ram将为您带来更高的性能结果,因为ram比使用memcache之类的文件系统更快但如果你没有那个可用,那么只需使用文件系统缓存。