memcached和redis的區別

時間 2022-08-18 08:30:04

1樓:匿名使用者

1 網路io模型

memcached是多執行緒,非阻塞io復用的網路模型,分為監聽主線程和worker子執行緒,監聽執行緒監聽網路連線,接受請求後,將連線描述字pipe 傳遞給worker執行緒,進行讀寫io, 網路層使用libevent封裝的事件庫,多執行緒模型可以發揮多核作用,但是引入了cache coherency和鎖的問題,比如,memcached最常用的stats 命令,實際memcached所有操作都要對這個全域性變數加鎖,進行計數等工作,帶來了效能損耗。

(memcached網路io模型)

redis使用單執行緒的io復用模型,自己封裝了乙個簡單的aeevent事件處理框架,主要實現了epoll、kqueue和select,對於單純只有io操作來說,單執行緒可以將速度優勢發揮到最大,但是redis也提供了一些簡單的計算功能,比如排序、聚合等,對於這些操作,單執行緒模型實際會嚴重影響整體吞吐量,cpu計算過程中,整個io排程都是被阻塞住的。

2.記憶體管理方面

memcached使用預分配的記憶體池的方式,使用slab和大小不同的chunk來管理記憶體,item根據大小選擇合適的chunk儲存,記憶體池的方式可以省去申請/釋放記憶體的開銷,並且能減小記憶體碎片產生,但這種方式也會帶來一定程度上的空間浪費,並且在記憶體仍然有很大空間時,新的資料也可能會被剔除,原因可以參考timyang的文章:http://timyang.

net/data/memcached-lru-evictions/

人類的大腦皮層中有言語區 w區 v區 s區和h區 它們分別對應的語言功能是

據分析可知,w區為書寫中樞,v區為視覺性語言中樞,s區為說話中樞,h區為聽覺性語言中樞 故人類的大腦皮層中有四個言語區 w區 v區 s區和h區分別對應的語言功能是寫字 閱讀 說話 聽 故選 b 臨床發現,損傷大腦皮層 前回底部的s區,病人可以看懂文字和聽懂別人談話,但自己卻不會講話,則該區域為 語言...

timestamp和datetime的區別

1.儲存空間不同 a timestamp占用4個位元組 b datetime占用8個位元組 2.受時區影響 c timestamp實際記錄的是1970 01 01 00 00 01到現在的數數,受時區影響 d datetime不受時區影響 3.時間範圍不同 e timestamp的時間範圍是 197...

jqueryforeach和each的區別

jquert沒有foreach foreach是原生js的方法,針對陣列,foreach value,index,arr each是jq的方法,針對jq物件,each index,value 注意兩者第一二個引數是位置顛倒的 jquery裡沒有foreach的函式 jquery裡面的each 是什麼...

since和for,as,because的區別是什麼

becaue since as和for表達原因時的區分 because,since,as和for的區別 because since as for這四個詞都是表示原因或理由的連線詞,但是as,because,since是從屬連詞,引導原因狀語從句,for是並列連詞,所引導的不是原因狀語從句,而是表示理...

neither nor和both and的區別

both and.意為 兩者 兩個 雙方 謂語動詞用複數 both john and ann are good at french.either.or.或者.或者.不是.就是.he is either a doctor or a teacher.注意 連線兩個並列主語是,謂語動詞與其靠近的主語一致....