如何在php中构建内存服务器端缓存


how to build a in-memory server side cache in php?

我试图通过提供内存缓存来减少数据库访问的数量。我知道我可以通过使用会话和cookie来获得缓存,但是这只适用于每个客户端。如果在每个会话中执行一次相同的查询,那么缓存将是无用的。但是我只想访问数据库一次,并将其缓存。

是否有一种方法,使创建一个缓存在内存中,可以由服务器端脚本访问?我不想将缓存数据存储在文件中。

您可以使用MemCache,如果已安装。

另一个选项是在MySQL中创建一个存储类型为MEMORY的表。您仍将使用数据库,但它将快得多。但是MemCache将真正减少数据库的负载,因为您可以在数据库之外缓存数据,甚至在不同的服务器上。

在共享主机空间上,您可能没有可用的memcache。在这种情况下检查APC。如果在多台机器上运行,Memcache真的很好用。如果你的网站运行在一个单一的web服务器APC将做同样的工作(与较低的开销)。

Memecached/Memcache是最广泛使用的解决方案,如果你想有多个服务器或能够访问缓存的多台机器。

但是,如果您只希望缓存在本地(在运行PHP代码的同一台机器上),您还有其他更简单的选择:

APC模块还可以与apc_add, apc_fetch等一起在内存中存储内容…

或者您可以在 tmpfs 中使用标准文件。这具有完全可移植的优点,并且如果任何缓存系统使用文件,您可以非常快速地设置它。

尝试MemCache

Memcache模块为memcached提供了方便的过程化和面向对象的接口,memcached是一个高效的缓存守护进程,专门用于减少动态web应用程序中数据库的负载。