云南網站建設創新企業 昆明多彩網絡公司

|網頁對話|電話:0871-63215311

php各種緩存策略對比

來源:昆明多彩網絡公司 日期:2010-10-15 閱讀: 發表評論

緩存是程序開發無法避讓的技術,它有很多好的好處,可以加快網站打開速度,減少服務器負載等等好處,這里來對比一下各種緩存機制的優勢和劣勢

為什么要使用緩存?

1、 減少數據庫訪問,降低數據庫壓力

2、加速系統訪問速度,提升系統性能

二、常用的幾種緩存(這里說的均為數據緩存)

1、文件緩存(以文件形式存在磁盤上)

2、Memcache(保存在內存里)

3、前端代理

4、Mysql內存表(這個算不上緩存)

三、比較幾種緩存的效率,選出適合自己系統用的緩存架構

1、文件緩存

常用的文件緩存包括:zend cache,各種框架所帶的緩存,smarty所帶的緩存。優點:靜態化頁面使得訪問速度加快,降低服務器的壓力。缺點:對于實時性數據或是不斷變化的數據會造成數據不同步,當然你會說那我每次可以修改相應的緩存或是刪除了再建立,但是這么做一定會造成io的開銷,還有就是不要存太大文件,太大文件讀取的時候會造成系統開銷很大,也不要存太小的文件,太小的文件會造成磁盤碎片。

2、Memcached

Memcached作為php5的一個新的擴展緩存類,是一個分布式內存緩存系統。Memcached是“分布式”的內存對象緩存系統,那么就是說,那些不需要“分布”的,不需要共享的,或者干脆規模小到只有一臺服務器的應用,memcached不會帶來任何好處,相反還會拖慢系統效率,因為網絡連接同樣需要資源,即使是UNIX本地連接也一樣。在我之前的測試數據中顯示,memcached本地讀寫速度要比直接PHP內存數組慢幾十倍,而APC、共享內存方式都和直接數組差不多?梢,如果只是本地級緩存,使用memcached是非常不劃算的。

Memcahce如何部署:

首先啟動n個memcache進程,這些進程可以在不同的server的不同端口上.然后使用perl的api可以方便的一次鏈接多個memcache,存儲讀取機制不明.不久找到php的一個MemcachedClient類,基本上就是perl里api的再實現.它使用的fscokopen或者socket系列function來直接讀取memcache----這說明只要清楚memcache的網絡協議,你甚至不用裝什么php的memcacheextenstion.看了這個類的實現,基本上弄清楚,它的分布式應用差不多就是將不同的key保存在不同的memcachedaemon,不會保留多個副本,也就不存在多memcache同步的問題了。

memcached也經常作為服務器之間數據共享的存儲媒介,例如在SSO系統中保存系統單點登陸狀態的數據就可以保存在memcached中,被多個應用共享

優點:通過簡單的配置,可以把數據放到另一臺機子的緩存,通過socket讀取。這種方法比磁盤存儲要快很多,減少io讀取,提升web的性能。
缺點:如果memcache機子重啟,那么所有緩存數據將丟失,不適宜存儲永久數據和數據量大的數據。

總結:memcached使用內存并不會得到成百上千的讀寫速度提高,它的實際瓶頸在于網絡連接,它和使用磁盤的數據庫系統相比,好處在于它本身非常“輕”,因為沒有過多的開銷和直接的讀寫方式,它可以輕松應付非常大的數據交換量,所以經常會出現兩條千兆網絡帶寬都滿負荷了,memcached進程本身并不占用多少CPU資源的情況?偨Y:
緩存的目的:讓被期待性高的數據暫存入性能相對好的存儲設備以達到使系統性能提升的目的。任何緩存,無論頁面、數據、對象等都是按照上面描述來進行策略選擇的。也就是說,不管需要緩存的是什么,你只用選出被期待性高的,然后把他們存入性能相對較好的存儲設備就行了。最重要的是找出你系統的瓶頸,然后采用不同的緩存。
 

發表評論評論列表(有 條評論)

網頁對話 0871-63215311
原创视频传到什么网站可以赚钱 如何找到涨停股票 天津快乐十分钟技巧 幸运农场最新 体彩31选7玩法 好运彩登录 买绿波赔多少 全国前三配资 甘肃11选五玩法介绍 股票趋势分析方法 姚记棋牌1