標籤:
如果不考慮其他任何問題,只比較速度的話,那肯定是mem快,但他們各有優缺點。
檔案快取優點:
1、由於現在的硬碟都非常大,所有如果是大資料的時候,放硬碟裡就比較合適,比如做一個cms網站,網站裡有10萬篇文章,產生的檔案大小總數可能就會很大。
2、資料的存放較為安全,由於是硬碟存放,所以在意外掉電的情況下,快取檔案不會丟失。
3、易於擴充,如果硬碟不夠用,可以更換大硬碟或者添加硬碟,在容量上受的限制很小。
檔案快取缺點:
1、高並發時,硬碟的讀寫效能大幅度降低。
2、網站pv持續很高的情況下,硬碟壽命大大降低。
memcached優點:
1、讀寫效能優異,特別是高並發時和檔案快取比有明顯優勢。
2、memcached組建支援叢集,並且是自動管理負載平衡。
memcached缺點:
1、緩衝空間有限:據說一台電腦的mem緩衝開到2g以上會出現不穩定,資料無故丟失的現象。
2、掉電遺失資料:由於是把資料放在記憶體裡的,所有一旦機器掉電,資料也就全部丟失了。
一般建議:如果是做內容緩衝的話,比如把一些不經常更改的文章放在檔案快取裡比較合適,而mem則適合放一些頻繁更改的資料,比如可以把session資料放進mem。
檔案快取耗IO、到期時間自行控制、不費頻寬、不易採用分布式。
cache緩衝耗記憶體、到期時間由cache控制、稍占頻寬、易採用分布式。
在實際項目應用中,可以聯合使用memcache和檔案類型緩衝。根據熱度來把最熱的資料放在記憶體裡面。然後把一般的資料放在檔案快取中。
讀取資料時,可以按照 memcache=>file_cache=>databases
這樣的遞迴來處理。最大程度的利用緩衝來減輕資料庫的查詢壓力。
另外session不能放在記憶體裡面。可以用redis儲存session.定時把記憶體資料重新整理到硬碟。這樣萬一斷電或者其他故障,不至於所有session都失效。
memcache 的使用情境是:當你有大量的資料 >2G 大小,而這些資料是 有可能被很頻繁的讀寫時,memcache可以使用叢集,不但跨進程,而且跨機器。
檔案快取,現在較少使用了。因為磁碟io的隨機定位是10ms 左右,而且磁碟io太頻繁的話,會拖慢整個伺服器的處理效能。也沒辦法支援高並發。
現在的大部分的時候都是將計算和io區分開,可以保證各自的效能。計算可以放到資料庫去做,比如查詢 ,連表啊 啥的。
io就nosql吧 這樣支援高並發好點。
http://zzstudy.offcn.com/archives/10009
PHP檔案快取與memcached緩衝 相比 優缺點是什麼呢【總結】