2011-10-13 60 views
3

我正试图通过提供内存缓存来减少数据库访问量。 据我所知,我可以通过使用会话和cookie来获得缓存,但是这仅适用于每个客户端。如果在每个会话中进行一次相同的查询,则缓存将无用。但我只想访问数据库一次并将其缓存。如何在php中构建内存中服务器端缓存?

有没有办法在内存中创建一个可以被服务器端脚本访问的缓存?我不想将缓存数据存储在文件中。

+2

memcached是标准的方式。 http://php.net/manual/en/book.memcached.php – dm03514

回答

2

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

另一种选择是在MySQL中创建一个存储类型为MEMORY的表。你仍然会使用数据库,但速度会快很多。但MemCache将真正减轻数据库的负担,因为即使在不同的服务器上,您也可以将数据缓存在数据库之外。

0

尝试MemCache

内存缓存模块提供方便的程序和面向对象接口来memcached的,高度有效的缓存后台进程,其特别设计,以减少在动态web应用程序的数据库的负载。

2

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

+0

谢谢,我也会看看这个,可能更适合我的情况 – y62wang

0

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

但是,如果你只希望你的缓存为本地网(即运行PHP代码在同一台机器上),你有其他的,比较容易选择:

APC模块还可以存储的东西在内存apc_addapc_fetch等等

或者你可以在tmpfs使用标准的文件。这具有完全便携性的优点,并且如果任何缓存系统使用文件,则可以非常快速地进行设置。