Memcached與Redis有什麼區別

2021-08-20 02:11:47 字數 1543 閱讀 5079

redis 和 memcached 都是基於記憶體的資料儲存系統。memcached是高效能分布式記憶體快取服務,其本質上就是乙個記憶體key-value資料庫。redis是乙個開源的key-value儲存系統。與memcached類似,redis將大部分資料儲存在記憶體中,支援的資料型別包括:字串、雜湊表、鍊錶、集合、有序集合以及基於這些資料型別的相關操作。那麼,memcached與redis有什麼區別呢?讓我們一起來看一下。

1、資料操作不同

與memcached僅支援簡單的key-value結構的資料記錄不同,redis支援的資料型別要豐富得多。memcached基本只支援簡單的key-value儲存,不支援列舉,不支援持久化和複製等功能。redis支援伺服器端的資料操作相比memcached來說,擁有更多的資料結構和並支援更豐富的資料操作,支援list、set、sorted set、hash等眾多資料結構,還同時提供了持久化和複製等功能。而通常在memcached裡,使用者需要將資料拿到客戶端來進行類似的修改再set回去,這大大增加了網路io的次數和資料體積。在redis中,這些複雜的操作通常和一般的get/set一樣高效。所以,如果需要快取能夠支援更複雜的結構和操作, redis會是更好的選擇。

2、記憶體管理機制不同

而memcached預設使用slaballocation機制管理記憶體,其主要思想是按照預先規定的大小,將分配的記憶體分割成特定長度的塊以儲存相應長度的key-value資料記錄,以完全解決記憶體碎片問題。

從記憶體利用率來講,使用簡單的key-value儲存的話,memcached的記憶體利用率更高。而如果redis採用hash結構來做key-value儲存,由於其組合式的壓縮,其記憶體利用率會高於memcached。

3、效能不同

由於redis只使用單核,而memcached可以使用多核,所以平均每乙個核上redis在儲存小資料時比memcached效能更高。而在100k以上的資料中,memcached效能要高於redis,雖然redis也在儲存大資料的效能上進行了優化,但是比起memcached,還是稍有遜色。

4、集群管理不同

memcached是全記憶體的資料緩衝系統,redis雖然支援資料的持久化,但是全記憶體畢竟才是其高效能的本質。作為基於記憶體的儲存系統來說,機器物理記憶體的大小就是系統能夠容納的最大資料量。如果需要處理的資料量超過了單台機器的物理記憶體大小,就需要構建分布式集群來擴充套件儲存能力。

memcached本身並不支援分布式,因此只能在客戶端通過像一致性雜湊這樣的分布式演算法來實現memcached的分布式儲存。相較於memcached只能採用客戶端實現分布式儲存,redis更偏向於在伺服器端構建分布式儲存。

小結:redis和memcached哪個更好?

redis更多場景是作為memcached的替代者來使用,當需要除key-value之外的更多資料型別支援或儲存的資料不能被剔除時,使用redis更合適。如果只做快取的話,memcached已經足夠應付絕大部分的需求,redis 的出現只是提供了乙個更加好的選擇。總的來說,根據使用者自身的需求去選擇才是最合適的。

Redis與Memcached的比較

1.網路io模型 memcached是多執行緒,非阻塞io復用的網路模型,分為監聽主線程和worker子執行緒,監聽執行緒監聽網路連線,接受請求後,將連線描述字pipe 傳遞給worker執行緒,進行讀寫io,網路層使用libevent封裝的事件庫,多執行緒模型可以發揮多核作用,但是引入了cache...

Redis與Memcached的比較

redis與memcached的比較 1.網路io模型 memcached是多執行緒,非阻塞io復用的網路模型,分為監聽主線程和worker子執行緒,監聽執行緒監聽網路連線,接受請求後,將連線描述字pipe 傳遞給worker執行緒,進行讀寫io,網路層使用libevent封裝的事件庫,多執行緒模型...

Redis與Memcached的比較

redis與memcached的比較 網路io模型 memcached是多執行緒,非阻塞io復用的網路模型,分為監聽主線程和worker子執行緒,監聽執行緒監聽網路連線,接受請求後,將連線描述字pipe 傳遞給worker執行緒,進行讀寫io,網路層使用libevent封裝的事件庫,多執行緒模型可以...