日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

memcache 原理 监测 查看状态 stats 结构

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 memcache 原理 监测 查看状态 stats 结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Mencache內存存儲方式:slab/LRU,采用預先申請固定大小的內存頁(slab/page),然后再把內存分成多個塊(chunk)

先放一張從網上找到的memcache內存結構圖,覺得非常的贊:

再來一張memcache slab內存分配圖,最討厭看圖了,但是看到這圖對memcache的內存分配豁然開朗,于是決定以后要多看圖。

Item內存結構圖

item就是存放在chunk中的實際數據,

新建Item分配內存過程

快速定位slab classid
計算key+value+suffix+32結構體,如90byte (key鍵長+suffix+value值長+結構大小(32字節)
如果>1MB,無法存儲丟棄
取最小冗余的slab class
如:有48,96,120,存90會選擇96

按順序尋找可用chunk
slot:檢查slab回收空間slot里是否有剩余chunk
delete:delete時標記到slot
exptime:get時檢查的過期對象標記到slot
end_page_ptr:檢查page中是否有剩余chunk
memory:內存還有剩余則開辟新的slab
LRU:Slab內部掃描Item雙向鏈表50次

Memcache命令

連接memcache測試: telnet? ip port,如telnet 127.0.0.1 11211

存儲命令格式

<command> <key> <flags> <exptime> <bytes> [<version>]\r\n
<datablock>\r\n

?

commandset無論如何都進行存儲
add只有數據不存在時進行添加
repalce只有數據存在時進行替換
append往后追加:append <key> datablock <status>
prepend往前追加:prepend <key> datablock <status>

cas按版本號更改
key字符串,<250個字符,不包含空格和控制字符
flags客戶端用來標識數據格式的數值,如json,xml,壓縮等
exptime存活時間 s 以秒為單位,0為永遠,<30天60*60*24*30為秒數,>30天為unixtime
bytesbyte字節數,不包含\r\n,根據長度截取存/取的字符串,可以是0,即存空串
datablock文本行,以\r\n結尾,當然可以包含\r或\n

?

例:

##存入數據,特別注意bytes(也就是下面那個5),bytes指明datablock字節數(\r\n算兩個字節)。如果bytes與你實際輸入的datablock字節數不一致,會報client_error錯誤。
set testzhong_liu 0 3600 5
ab
c
STORED

get testzhong_liu
VALUE testzhong_liu 0 5
ab
c
END

?

讀取命令格式:

<command> <key>[ key1[ key2...]\r\n

get testzhong_liu testcook VALUE testzhong_liu 0 5 ab c END

計數命令incr/decr

incr/decr <key> <int>

key必需存在

value必需是數值

刪除命令delete

delete <key> [<time>]

統計命令

stats STAT pid 1014 //Memcache進程ID STAT uptime 8122 //Memcached運行時間,單位:秒 STAT time 1357359669 //Memcached當前的UNIX時間 STAT version 1.4.7 //Memcached的版本號 STAT libevent 2.0.19-stable STAT pointer_size 64 STAT rusage_user 0.144009 //該進程累計的用戶時間,單位:秒 STAT rusage_system 0.064004 //該進程累計的系統時間,單位:秒 STAT curr_connections 10 //當前連接數量 STAT total_connections 34 //Memcached運行以來接受的連接總數 STAT connection_structures 11 //Memcached分配的連接結構的數量 STAT cmd_get 64 //查詢請求總數 STAT cmd_set 10 //存儲(添加/更新)請求總數 STAT cmd_flush 0 //flush請求總數 STAT get_hits 60 //查詢成功獲取數據的總次數 STAT get_misses 4 //查詢成功未獲取到數據的總次數 STAT delete_misses 0 STAT delete_hits 0 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 10753 //Memcached從網絡讀取到的總字節數 STAT bytes_written 227141 //Memcached向網絡發送的總字節數 STAT limit_maxbytes 67108864 //Memcached在存儲時被允許使用的字節總數 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT bytes 8416 //Memcached當前存儲內容所占用字節數 STAT curr_items 4 //Memcached當前存儲的內容數量 STAT total_items 7 //Memcached啟動以來存儲過的內容總數 STAT evictions 0 //LRU釋放對象數,用來釋放內存 STAT reclaimed 0 END



stats settings

stats items

stats sizes

stats slabs

其他命令

-version -flush_all -quit -echo|nc 快捷方式 echo get testzhong_liu | nc localhost 11210

知識點:

windows下修改memcached運行參數:
1>開始>運行:regedit(回車)
2>在注冊表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
3>默認的ImagePath鍵的值是:"c:\memcached\memcached.exe" -d runservice,改為:"c:\memcached\memcached.exe" -d runservice -m 512 -p 11200 -l 192.168.1.55
4>我的電腦(右鍵)>管理>服務 找到memcache的服務,重新啟動一次即可生效。

參考:http://blog.csdn.net/zhxp_870516/article/category/1310409/1

轉載于:https://www.cnblogs.com/mengzhongshi/p/3511668.html

總結

以上是生活随笔為你收集整理的memcache 原理 监测 查看状态 stats 结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。