腳踏兩隻船的困惑 Memcached和Redis

2021-09-11 07:33:19 字數 1451 閱讀 2027

memcached:一款完全開源、高效能、分布式的記憶體系統

redis:乙個開源的,key-value型、基於記憶體執行並支援持久化的nosql資料庫。

從概念上來看,memcached和redis並非是一對「孿生兄弟」,能將二者聯絡起來的紐帶就是記憶體。從誕生之初起,二者的目標就有差異。memcached追求高效能的記憶體服務,而redis不僅支援記憶體服務,而且支援資料持久化操作。

對比引數

redis

memcached

型別支援記憶體

key-value鍵值對儲存

非關係型資料庫

支援記憶體

key-value鍵值對儲存

快取系統

資料儲存型別

string

setzset

list

hash

string

查詢操作型別

批量操作

事務支援(雖然是假的事務)

每個型別不同的crud

crud

少量的其他命令

附加功能

發布/訂閱模式

主從分割槽

序列號支援

多執行緒服務支援

網路io模型

單程序模式

多執行緒、非阻塞io模式

事件庫自封裝簡易事件庫aeevent

libevent事件庫

持久化操作

rdbaof

不支援memcached是多執行緒,非阻塞io復用的網路模型。分為監聽主線程和worker子執行緒。監聽執行緒監聽網路連線,接收請求後,由worker執行緒進行讀寫。多執行緒可以發揮多核作用。

redis是單執行緒的io復用模型。對於單純只有io操作來說,單執行緒可以將速度優勢發揮到最大。但是redis也提供了一些簡單的計算功能,比如排序、集合等。對於單執行緒模型會嚴重影響吞吐量,因為在cpu計算時整個io排程都是被阻塞的。

在高併發環境下,多執行緒非阻塞式的io的memcached表現會更加優異。

redis提供了「事務」概念,但這是假的事務。redis是單執行緒操作,而redis的事務僅是讓一組操作按順序執行,在執行過程中不會插入其他操作。但是這種方式可能造成阻塞。memcached採用了cas機制,會快速的返回操作成功或操作失敗。在這一點上,memcached比redis更快。

memcached本身並不支援集群,memcached的集群是通過客戶端來實現的,這就是memcached的兩段hash。

應用程式首先呼叫memcached客戶端,由memcached通過hash演算法查詢memcached節點。找打節點後再進行一次hash操作。

redis本身是支援集群的,各節點之間可以相互通訊。

以往使用redis的string型別做的事,都可以用memcached代替,以此換取更好的效能提公升。除此之外,優先考慮redis。

爆劉德華腳踩兩隻船 喻可欣稱娶誰與己無關

爆劉德華腳踩兩隻船 喻可欣稱娶誰與己無關 日前有香港雜誌報導,劉德華 華仔 準備買七千多萬元豪宅給拍拖十七年的朱麗倩,兩人並準備結婚。對此,喻可欣昨天說 華仔 曾劈腿,他跟朱麗倩 在一起的時候,還跟我藕斷絲連,分手十年後,他已和朱麗倩 在一起,卻履行和我當初的約定,到我美國洛杉磯的家找我。剪不斷理還...

抓到兩隻IE8的蟲子

蟲子1 眾所周知,ie8是充分相容w3標準的,但是它居然不支援hr標籤的size屬性,如下 hr noshade size 1 class clear 我已經把size設定成1,但是在ie8下面的顯示居然是這樣的 但是ie6,ie7,和firefox3都沒有這個問題,正常的顯示如下圖 大家可以看具體...

桌上有一空盤,最多允許存放相同的兩隻水果

題目 桌上有一空盤,最多允許存放相同的兩隻水果。爸爸每次可向盤中放乙個蘋果或放乙個桔子,兒子專等吃盤中的桔子,女兒專等吃蘋果。試用p v操作實現爸爸 兒子 女兒三個併發程序的同步。重點分析爸爸的程序 最多只能放兩個水果 放蘋果與放桔子互斥,但是多個放蘋果操作之間不互斥 同理放桔子與放蘋果互斥,多個放...