小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

memcached命令解析

 Tom.Lin 2013-09-24
memcached命令

  • 標準協(xié)議
    • No Reply
  • 存儲命令
    • set命令
    • add命令
    • replace命令
    • append命令
    • prepend命令
    • cas命令
  • 讀取命令
    • get命令
    • gets命令
  • 刪除命令
  • incr/decr命令
  • 查看memcached使用狀態(tài)
    • stats命令
    • stats items命令
    • stats slabs命令
    • stats sizes命令
  • flush_all命令

全部協(xié)議在Protocol Documentation



標準協(xié)議

memcached所有的標準協(xié)議包含在對item執(zhí)行命令過程中,一個item包含:

  • 一個key
  • 一個32位的標志值
  • 以秒為單位的失效時間
  • 一個64為的CAS值,這個是唯一的
  • 數(shù)據(jù)

CAS是可選的,可以使用“

-C

”禁止CAS。

No Reply

大多數(shù)ascii命令允許“noreply”。建議大家在ascii協(xié)議下別用“noreply”,因為那樣不會報請求錯誤?!皀oreply”的目的是在執(zhí)行交互命令(如:set、add)后,避免等待返回的包。

二進制協(xié)議將“noreply”定義為聲明。如果你的客戶端支持或者使用二進制協(xié)議,那么你將會用到它。


存儲命令

首先客戶端向服務(wù)器按照如下格式發(fā)送命令行:

<command name> <key> <flags> <exptime> <bytes>\r\n


    a) <command name> 可以是"set", "add", "replace"。

        "set"表示按照相應(yīng)的<key>存儲該數(shù)據(jù)。

        "add"表示按照相應(yīng)的<key>添加該數(shù)據(jù),但是如果該<key>已經(jīng)存在則會操作失敗。

        "replace"表示按照相應(yīng)的<key>替換數(shù)據(jù),但是如果該<key>不存在則操作失敗


    b) <key> 客戶端需要保存數(shù)據(jù)的key。


    c) <flags> 是一個16位的無符號的整數(shù)(以十進制的方式表示)。該標志將和需要存儲的數(shù)據(jù)一起存儲,并在客戶端get數(shù)據(jù)時返回??蛻艨梢詫⒋藰酥居米鎏厥庥猛荆藰酥緦Ψ?wù)器來說是不透明的。


    d) <exptime> 過期的時間。如果該數(shù)值為0表示存儲的數(shù)據(jù)永遠不過時(但是,該數(shù)據(jù)有可能被其他項所替換掉。因為服務(wù)器采用了LRU(最近最久沒有使用)的算法替換)。如果非0(unix時間或者距離此時的秒數(shù)),當過期后,服務(wù)器可以保證用戶得不到該數(shù)據(jù)(以服務(wù)器時間為標準)。


    e) <bytes> 需要存儲的字節(jié)數(shù)(不包含最后的"\r\n"),當用戶希望存儲空數(shù)據(jù)時,<bytes>可以為0


    f) 最后客戶端需要加上"\r\n"作為"命令頭"的結(jié)束標志。


<data block>\r\n

    緊接著"命令頭"結(jié)束之后就要發(fā)送數(shù)據(jù)塊(即希望存儲的數(shù)據(jù)內(nèi)容),最后加上"\r\n"作為此次通訊的結(jié)束。


reply

    當以上數(shù)據(jù)發(fā)送結(jié)束之后,服務(wù)器將返回一個應(yīng)答??赡苡腥缦碌那闆r:


    a) "STORED\r\n"

        表示存儲成功


    b) "NOT_STORED\r\n"

        表示存儲失敗,但是該失敗不是由于錯誤。通常這是由于"add"或者"replace"命令本身的要求所引起的,或者該項在刪除隊列之中(見delete命令)。


set

set是保存數(shù)據(jù)命令。會覆蓋已存在的數(shù)據(jù),而新數(shù)據(jù)將在LRU頂端

add

只有在該數(shù)據(jù)不存在時才保存該數(shù)據(jù)。如果是新加入的item,那么將其直接放在LRU頂端;如果item已經(jīng)存在導(dǎo)致add失敗,那么將這個item從LRU鏈表上摘下再放到LRU頂端。

replace

替換已經(jīng)存在的數(shù)據(jù)。 這個操作幾乎用不到。

append

緊接著已經(jīng)存在的item增加item。這個操作不允許增加原來的item限制,對管理鏈表很有用。

prepend

與append命令類似,這個命令是在已存在的數(shù)據(jù)前加入新數(shù)據(jù)。

cas

檢查并存儲(

Check And Set)或者比較并更新(Compare And Swap)。如果從上次讀取到現(xiàn)在沒有更新,那么存入數(shù)據(jù),處理更新競爭很有用。


讀取命令

獲取數(shù)據(jù)的格式: 

get <key>*\r\n

    a) <key>* 表示一個或者多個key(以空格分開)

    b) "\r\n" 命令頭的結(jié)束


reply

    服務(wù)器端將返回0個或者多個的數(shù)據(jù)項。每個數(shù)據(jù)項都是由一個文本行和一個數(shù)據(jù)塊組成。當所有的數(shù)據(jù)項都接收完畢將收到"END\r\n"


每一項的數(shù)據(jù)結(jié)構(gòu):

VALUE <key> <flags> <bytes>\r\n

<data block>\r\n

    a) <key> 希望得到存儲數(shù)據(jù)的key

    b) <falg> 發(fā)送set命令時設(shè)置的標志項

    c) <bytes> 發(fā)送數(shù)據(jù)塊的長度(不包含"\r\n")

    d) "\r\n" 文本行的結(jié)束標志

    e) <data block> 希望接收的數(shù)據(jù)項。

    f) "\r\n" 接收一個數(shù)據(jù)項的結(jié)束標志。


如果有些key出現(xiàn)在get命令行中但是沒有返回相應(yīng)的數(shù)據(jù),這意味著服務(wù)器中不存在這些項,這些項過時了,或者被刪除了。

get

讀取命令, 更具一個或多個key查找數(shù)據(jù),并返回所找到的數(shù)據(jù)。

gets

使用CAS的get命令,返回的item帶有一個CAS標識符 (一個唯一的64位數(shù))。使用cas命令返回數(shù)據(jù)。如果得到的item的cas值被更改了,這個數(shù)據(jù)將不會被保存。


刪除命令

如果存在,將item從cache中刪除,

delete 命令格式: 

delete <key> <time>\r\n

    a) <key> 需要被刪除數(shù)據(jù)的key

    b) <time> 客戶端希望服務(wù)器將該數(shù)據(jù)刪除的時間(unix時間或者從現(xiàn)在開始的秒數(shù))

    c) "\r\n" 命令頭的結(jié)束


reply


    a) "DELETED\r\n" 刪除成功

    b) "NOT_FOUND\r\n" 需要刪除的key不存在


incr/decr

Increment and Decrement. 如果item是以64為整型存儲的,那么可以使用incr和decr命令修改那個數(shù)。

如果數(shù)據(jù)不存在,那么將返回失敗。

命令格式:

incr <key> <value>\r\n

or

decr <key> <value>\r\n

    a) <key> 數(shù)據(jù)項的key

    b) <value> 用戶希望增加/減少的數(shù)據(jù)的數(shù)值.該數(shù)值是一個32位十進制的無符號整形變量。

    c) "\r\n" 命令行結(jié)束標志


reply

    a) "NOT_FOUND\r\n" 沒有找到需要操作的項。

    b) "<value>\r\n" <value>數(shù)據(jù)項有效期的最新剩余時間。


注意: 

    a) 如果一個數(shù)據(jù)項的有效期被設(shè)置為0,這時使用decr命令是無法減少數(shù)據(jù)。

    b) 如果要執(zhí)行 incr key -1 的操作不會有什么問題,結(jié)果和你希望的一樣。但是,執(zhí)行decr -1時的結(jié)果一定會讓你覺得很意外,因為它的結(jié)果無論key的數(shù)據(jù)是什么結(jié)果的都是0.原因是:在這兩個命令的執(zhí)行過程中都是吧-1當做一個無符號的整形處理的。

    c) 執(zhí)行decr命令時數(shù)據(jù)的長度不會隨之而減小,而是在返回數(shù)據(jù)的后面填補空格。但是執(zhí)行incr命令越界后會自動的增加數(shù)據(jù)的位數(shù)。


查看memcached使用狀態(tài)

 通過這些命令可以查看memcached服務(wù)器的使用狀態(tài)。

stats

查看memcached狀態(tài)的基本命令,通過這個命令可以看到如下信息:

STAT pid 22459                             進程ID
STAT uptime 1027046                        服務(wù)器運行秒數(shù)
STAT time 1273043062                       服務(wù)器當前unix時間戳
STAT version 1.4.4                         服務(wù)器版本
STAT pointer_size 64                       操作系統(tǒng)字大小(這臺服務(wù)器是64位的)
STAT rusage_user 0.040000                  進程累計用戶時間
STAT rusage_system 0.260000                進程累計系統(tǒng)時間
STAT curr_connections 10                   當前打開連接數(shù)
STAT total_connections 82                  曾打開的連接總數(shù)
STAT connection_structures 13              服務(wù)器分配的連接結(jié)構(gòu)數(shù)
STAT cmd_get 54                            執(zhí)行g(shù)et命令總數(shù)
STAT cmd_set 34                            執(zhí)行set命令總數(shù)
STAT cmd_flush 3                           指向flush_all命令總數(shù)
STAT get_hits 9                            get命中次數(shù)
STAT get_misses 45                         get未命中次數(shù)
STAT delete_misses 5                       delete未命中次數(shù)
STAT delete_hits 1                         delete命中次數(shù)
STAT incr_misses 0                         incr未命中次數(shù)
STAT incr_hits 0                           incr命中次數(shù)
STAT decr_misses 0                         decr未命中次數(shù)
STAT decr_hits 0                           decr命中次數(shù)
STAT cas_misses 0    cas未命中次數(shù)
STAT cas_hits 0                            cas命中次數(shù)
STAT cas_badval 0                          使用擦拭次數(shù)
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785                      讀取字節(jié)總數(shù)
STAT bytes_written 15222                   寫入字節(jié)總數(shù)
STAT limit_maxbytes 1048576                分配的內(nèi)存數(shù)(字節(jié))
STAT accepting_conns 1                     目前接受的鏈接數(shù)
STAT listen_disabled_num 0                 
STAT threads 4                             線程數(shù)
STAT conn_yields 0
STAT bytes 0                               存儲item字節(jié)數(shù)
STAT curr_items 0                          item個數(shù)
STAT total_items 34                        item總數(shù)
STAT evictions 0                           為獲取空間刪除item的總數(shù)


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多