2011-10-13 62 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使用標準的文件。這具有完全便攜性的優點,並且如果任何緩存系統使用文件,則可以非常快速地進行設置。