Redis 和 Memcached的區別

瞭解Redis 和 Memcached 的區別


具體有以下幾點:

  1. 數據類型支持不同

與Memcached僅支持簡單的key-value結構的數據記錄不同,Redis支持的數據類型要豐富得多。最爲常用得數據類型主要有 五種:String(字符串), Hash(哈希), List(列表), Set(集合)Sorted Set(有序集合). Redis內部使用一個redisObject對象來表示所有得key和value;

  1. 內存的管理機制不同

在redis中,並不是所有的數據一直存儲在內存中的。這是和Memcached相比一個最大的區別。當物理內存用完時,Redis可以將一些很久沒用到的value交換到磁盤中。Redis直會緩存所有的key的信息,如果Redis發現內存中的使用超過某一閾值,。將出發swap的操作。Redis計算出哪些key對應的value需要swap到磁盤,然後再將這些key對應的value持久化到磁盤中,同時再內存中清除。

  1. 數據持久化支持

Redis雖然時基於內存的存儲系統,當時他本身是支持數據持久化的,而且提供了兩種主要的持久化策略:

  1. RDB快照
  2. AOF日誌。
    而Memcached是不支持數據持久化操作的
  1. 集羣管理的不同

Memcached是全內存的數據緩衝系統,Redis雖然支持數據持久化,但是全內存畢竟纔是其提高性能的根本。作爲基於內存的存儲系統來說,機器物理內存的大小就是系統能夠容納的最大數據量。如果需要處理的數據量超過了單臺機器的物理內存的大小。就需要構建分佈式集羣來擴展存儲能力。

總結

  1. Redis支持服務器端的數據操作:Redis相比Memcached來說,擁有更多的數據結構和並支持更豐富的數據操作,通常在 Memcached裏,你需要將數據拿到客戶端來進行類似的修改再set回去。這大大增加了網絡IO的次數和數據體積。在Redis中,這些複雜的操作通常和一般的GET/SET一樣高效。所以,如果需要緩存能夠支持更復雜的結構和操作,那麼Redis會是不錯的選擇。
  2. 內存使用效率對比:使用簡單的key-value存儲的話,Memcached的內存利用率更高,而如果Redis採用hash結構來做key-value存儲,由於其組合式的壓縮,其內存利用率會高於Memcached。
  3. 性能對比:由於Redis只使用單核,而Memcached可以使用多核,所以平均每一個核上Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高於Redis,雖然Redis最近也在存儲大數據的性能上進行優化,但是比起Memcached,還是稍有遜色。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章