說起快取框架,我們最常用的快取框架有 memcached、Redis 這兩個,但它們之間其實是有差異的。
Memcached 的誕生
2003年5月,Brad Fitzpatrick 發布了第一個版本的Memcached,一開始主要是為了解決LiveJournal 網站存取快取問題而誕生的,這個版本的Memcached 使用Perl 語言編寫。 (建議學習:Redis視訊教學)
之後 Anatoly Vorobey 使用 C 重寫了 Memcached。現在 Memcached 已經被廣泛應用於 YouTube、Reddit、Facebook 等網站。
說起 Memcached 的誕生,主要還是因為關係型資料庫在儲存效能上的瓶頸。因為進入21世紀,隨著個人電腦的普及,世界網友數量急遽攀升,網站的訪問量也隨之攀升。
因為關聯式資料庫需要將資料持久化,所以會有一些寫硬碟IO的過程,因此在寫入資料上會有瓶頸。而為了解決硬碟IO速度慢的問題,Memcached 則是將所有資料儲存在了記憶體中,以實現快速的資料寫入與讀取。
也是因為Memcached 將資料儲存在記憶體中,沒有實現持久化,所以當出現一些意外情況,例如:斷電重啟、機器宕機等情況,Memcached 儲存的資料會全部遺失,我們只能重新從資料庫讀取一次,再載入到Memcached 中。
除此之外,Memcached只支援單一的 key-value 存儲,所以這裡面存儲的資料類型單一,無法適應多樣化的業務發展。
Redis 的誕生
正是因為以上問題的存儲,所以在2009年5月的時候Redis誕生了。 Redis創作者看到了Memcached身上存在的許多問題,所以創建了Redis快取框架。
在Redis快取框架中,它支援多達 6 種類型的資料存儲,並且提供了多個原子命令操作。而Redis也支援了將資料持久化到本機文件,這樣當發生意外時就不需要再從資料庫讀取一次資料了,直接讀取本機文件復原即可。
到底哪一個好?
從兩個快取框架的發展歷程來看,我們可以知道Redis是Memcached的升級版本,Memcached具有的功能Redis基本上都具備了。
所以很多時候我們都是使用Redis作為首選的快取框架,當然了Memcached也有一些比Redis好一些的效能,例如在儲存完全靜態的小量key-value 資料時,Memcached會比Redis快一些。
但只要資料量稍微大一點,或是資料是動態的,那麼Memcached的效能就會直線下降。
所以即使Memcached在某些方面有細微的優勢,但整體上Redis還是優於Redis這個快取框架的。
更多Redis相關技術文章,請造訪Redis入門教學欄位學習!
以上是memcached與redis哪個好的詳細內容。更多資訊請關注PHP中文網其他相關文章!