和memcached伺服器的互動

2021-04-21 14:25:31 字數 2983 閱讀 9748

和memcached伺服器的互動

comments 型別

1. storage commands: set add replace

2. retrieval commands: get

3. other commands: incr delete

error strings

1. "error/r/n"

客戶端傳送了乙個不存在的command

2. "client_error /r/n"

客戶端的錯誤:客戶端傳送的資料或者格式方面有問題。 表示具體錯誤的原因。

3. "server_error /r/n"

伺服器端的錯誤:伺服器一系列的錯誤阻止了命令的執行。表示具體錯誤的原因。當

發生此錯誤時。伺服器傳送完了"server_error /r/n"之後將會關閉connection。(這

是唯一的關閉connection的情況)

descriptions of individual commands

1. storage commands

首先客戶端向伺服器按照如下格式傳送命令列:

/r/n

a) 可以是"set", "add", "replace"。

"set"表示按照相應的儲存該資料。

"add"表示按照相應的新增該資料,但是如果該已經存在則會操作失敗。

"replace"表示按照相應的替換資料,但是如果該不存在則操作失敗

b) 客戶端需要儲存資料的key。

c) 是乙個16位的無符號的整數(以十進位制的方式表示)。該標誌將和需要儲存的資料

一起儲存,並在客戶端get資料時返回。客戶可以將此標誌用做特殊用途,此標誌對伺服器來

說是不透明的。

d) 過期的時間。如果該數值為0表示儲存的資料永遠不過時(但是,該資料有可能

被其他項所替換掉。因為伺服器採用了lru(最近最久沒有使用)的演算法替換)。如果非0(unix

時間或者距離此時的秒數),當過期後,伺服器可以保證使用者得不到該資料(以伺服器時間為標

準)。e) 需要儲存的位元組數(不包含最後的"/r/n"),當使用者希望儲存空資料時,可

以為0f) 最後客戶端需要加上"/r/n"作為"命令頭"的結束標誌。

/r/n

緊接著"命令頭"結束之後就要傳送資料塊(即希望儲存的資料內容),最後加上"/r/n"作為此次

通訊的結束。

reply

當以上資料傳送結束之後,伺服器將返回乙個應答。可能有如下的情況:

a) "stored/r/n"

表示儲存成功

b) "not_stored/r/n"

表示儲存失敗,但是該失敗不是由於錯誤。通常這是由於"add"或者"replace"命令本身的要求

所引起的,或者該項在刪除佇列之中(見delete命令)。

2 retrieval command

獲取資料的格式:

get */r/n

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

b) "/r/n" 命令頭的結束

reply

伺服器端將返回0個或者多個的資料項。每個資料項都是由乙個文字行和乙個資料塊組成。當

所有的資料項都接收完畢將收到"end/r/n"

每一項的資料結構:

value /r/n

/r/n

a) 希望得到儲存資料的key

b) 傳送set命令時設定的標誌項

c) 傳送資料塊的長度(不包含"/r/n")

d) "/r/n" 文字行的結束標誌

e) 希望接收的資料項。

f) "/r/n" 接收乙個資料項的結束標誌。

如果有些key出現在get命令列中但是沒有返回相應的資料,這意味著伺服器中不存在這些項

,這些項過時了,或者被刪除了。

3. delete

delete 命令格式:

delete /r/n

a) 需要被刪除資料的key

b) 客戶端希望伺服器將該資料刪除的時間(unix時間或者從現在開始的秒數)

c) "/r/n" 命令頭的結束

reply

a) "deleted/r/n" 刪除成功

b) "not_found/r/n" 需要刪除的key不存在

ps:"flush_all" command 可以所有項都無效。

4. increment/decrement

command "incr" "decr" 是用來改變資料項數值的命令。設定資料項的資料被認為是乙個10

進製的無符號的整數。如果當前設定的值不能夠被轉換則認為是0.如果該資料項的key不存在

,則執行命令失敗!

命令格式:

incr /r/n

ordecr /r/n

a) 資料項的key

b) 使用者希望增加/減少的資料的數值.該數值是乙個32位十進位制的無符號整形變數。

c) "/r/n" 命令列結束標誌

reply

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

b) "/r/n" 資料項有效期的最新剩餘時間。

注意: 

a) 如果乙個資料項的有效期被設定為0,這時使用decr命令是無法減少資料。

b) 如果要執行 incr key -1 的操作不會有什麼問題,結果和你希望的一樣。但是,執行decr 

-1時的結果一定會讓你覺得很意外,因為它的結果無論key的資料是什麼結果的都是0.原因是:

在這兩個命令的執行過程中都是吧-1當做乙個無符號的整形處理的。

c) 執行decr命令時資料的長度不會隨之而減小,而是在返回資料的後面填補空格。但是執行

incr命令越界後會自動的增加資料的位數。

5. 其他命令

"stats": 用來查詢伺服器提供的內部資料。

stats /r/n

查詢特定的資料

reply

stat /r/n

...end/r/n

"quit"

"quit/r/n": 退出程式

memcached 快取伺服器

memcached 是高效能的 分布式記憶體快取伺服器。一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態web應用的速度 提高可擴充套件性。主要特點 1 c s架構,協議簡單 2 基於libevent的事件處理 epoll 3 slab allocation記憶體管理機制 4...

memcached快取伺服器的安裝收藏

libevent 1.3.tar.gz memcached 1.2.2.tar.gz 2.解壓縮 libevent 1.3.tar.gz 編譯安裝 tar zxvf libevent 1.3.tar.gz cd libevent 1.3 configure prefix usr local libe...

Memcached 伺服器端命令

memcached的基本命令 安裝 解除安裝 啟動 配置相關 p 監聽的埠 l 連線的ip位址,預設是本機 d start 啟動memcached服務 d restart 重起memcached服務 d stop shutdown 關閉正在執行的memcached服務 d install 安裝mem...