memcache读书笔记(二)
2019獨角獸企業重金招聘Python工程師標準>>>
Memcached的內存算法:
slab allocation機制
Memcached利用slab allocation機制來分配和管理內存,它按照預先規定的?小, 將分配的內存分割成特定?長度的內存塊,再把尺寸相同的內存塊分成組,數據在存放時,根據鍵值 ?小去匹配slab?小,找就近的slab存放,所以存在空間浪費現象。
傳統的內存管理?式是,使?用完通過malloc分配的內存后通過free來回收內存,這種?式容易產生內存碎片并降低操作系統對內存的管理效率。
查看memcached的內部狀態
stats命令
stats slabs:輸出slab中更詳細的item信息
stats items:輸出各個slab中的item信息。
stats sizes:輸出所有item的?小和個數
Memcached的緩存策略:
Memcached的緩存策略是LRU(最近最少使?用)加上到期失效策略。當你在
memcached內存儲數據項時,你有可能會指定它在緩存的失效時間,默認為永久。當memcached服務器?用完分配的內存時,失效的數據被首先替換,然后也是最近未使?的數據。在LRU中,memcached使?的是一種Lazy Expiration策略,?己不會監控存入的key/vlue對是否過期,?是在獲取key值時查看記錄的時間戳,檢查key/value對空間是否過期,這樣可減輕服務器的負載。
Memcached的分布式算法:
當向memcached集群存入/取出key/value時,memcached客戶端程序根據一定的算法計算存入哪臺服務器,然后再把key/value值存到此服務器中。也就是說,存取數據分二步走:第一步,選擇服務器;第二步,存取數據。
分布式算法(Consistent Hashing):
選擇服務器算法有兩種,一種是根據余數來計算分布,另一種是根據散列算法來計算分布。
余數算法:
先求得鍵的整數散列值,再除以服務器臺數,根據余數確定存取服務器,這種方法計算簡單,高效,但在memcached服務器增加或減少時,幾乎所有的緩存都會失效。
散列算法:
先算出memcached服務器的散列值,并將其分布到0到2的32次方的圓上,然后用同樣的方法算出存儲數據的鍵的散列值并映射至圓上,最后從數據映射到的位置開始順時針查找,將數據保存到查找到的第一個服務器上,如果超過2的32次方,依然找不到服務器,就將數據保存到第一臺memcached服務器上。如果添加了一臺memcached服務器,只在圓上增加服務器的逆時針方向的第一臺服務器上的鍵會受到影響。
Memcache的管理與性能監控:
可以通過命令行直接管理與監控也可通過nagios、cacti等web軟件進行監控命令行:
Stats:統計memcached的各種信息 Stats reset:重新統計數據 Stats slabs,顯示slabs信息,可以詳細看到數據的分段存儲情況 Stats items:顯示slab中的item數目 Stats cachedump 1 0:列出slabs第一段里存的KEY值 Set|get:保存或獲取數據 STAT evictions 0:表示要騰出新空間給新的item而移動的合法item數目其它常用軟件使用:
Shell>./Memcached-tool 127.0.0.1:11211 Shell>./Memcached-tool 127.0.0.1:11211 displayWeb軟件:
1 Memcache.php 2 Nagios插件 3 Cacti模塊Memcached與redis比較:
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
轉載于:https://my.oschina.net/yangdongwei/blog/486891
總結
以上是生活随笔為你收集整理的memcache读书笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个资深投行女销售和低调IT创业男的故事
- 下一篇: 32位寄存器