標籤:宕機 實現 常用 速度 live 資料庫 發展曆程 之間 優勢
說起緩衝架構,我們最常用的緩衝架構有 memcached、Redis 這兩個,但它們之間其實是有差異的。
Memcached 的誕生
2003年5月,Brad Fitzpatrick 發布了第一個版本的 Memcached,一開始主要是為瞭解決 LiveJournal 網站訪問緩衝問題而誕生的,這個版本的 Memcached 使用 Perl 語言編寫。之後 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 和 Mecached 到底哪個好?