- 協議簡單(文本協議、二進制協議)
- 基於libevent的事件處理,libevent封裝了Linux的epoll模型的時間處理功能。
- slab存儲模型
- 集羣中服務器間互不通訊(在大集羣的狀況下,其性能遠超其餘同步更新緩存的緩存器,固然小集羣下,memcached的性能也十分優秀)
memcached的內存分配就是下面這一句話:採用分組管理、預分配方式。html
slab內存模型java
- 分組方式:Memcached將內存空間分爲一組slab,每一個slab的大小固定爲1M,每一個slab裏又包含一組chunk,同一個slab裏的每一個chunk大小相同。根據這些slab中的chunk的大小,將這些slab編號slab class(也就是上圖中的Classes i)。
- 存儲原理:當來一個要存儲的key-value對時,咱們查看這個數據的大小,選擇最適合的slab class中的空閒chunk放置該對象。
- 最合適的chunk:即該chunk的大小剛剛大於等於所存儲數據的大小,而比該chunk小一級的大小剛剛比所要存儲的數據小。
以上這種方式會形成內存大量浪費(我認爲這也是內存碎片)。緩存
- 減小內存浪費的方式:預估本身的緩存數據的大小,而後在啓動Memcached時合理的指定參數-f(增加因子)和-n(chunk最小尺寸)來劃份內存大小,根據公式chunk size = 80*f*(n-1)將內存分配爲若干個slab class。
http://www.cnblogs.com/java-zhao/p/5158034.html服務器
http://blog.csdn.net/cywosp/article/details/7707217memcached
http://blog.csdn.net/cywosp/article/details/7707221性能
http://blog.csdn.net/cywosp/article/details/7707227.net
http://blog.csdn.net/cywosp/article/details/7707236htm
http://blog.csdn.net/cywosp/article/details/7707239對象