成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Memcached常用指令

一、常用的存儲數(shù)據(jù)的三個指令

創(chuàng)新互聯(lián)公司技術(shù)團隊十余年來致力于為客戶提供成都網(wǎng)站制作、做網(wǎng)站、高端網(wǎng)站設(shè)計、網(wǎng)絡營銷推廣、搜索引擎SEO優(yōu)化等服務。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團隊,先后服務、推廣了成百上千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構(gòu)單位。

主要的三個存儲數(shù)據(jù)的指令分別是:set、add、replace。

  • set指令:是直接保存到一個叫做key的數(shù)據(jù)到服務器上(不管這個數(shù)據(jù)是否存在);
  • add指令:是添加一個數(shù)據(jù)到memcached,如果這個key已存在,則不進行添加,若不存在,則執(zhí)行添加;
  • replace指令:也是添加一個數(shù)據(jù)到memcached,但其與add指令相反,如果這個key存在,那么就修改其key值,如果不存在,則返回錯誤,不進行任何操作;

上述三個指令的語法格式都是一樣的,只是指令不一樣而已,其指令的語法格式如下:

<命令> <鍵> <標記> <有效期> <數(shù)據(jù)長度>

在上述的語法格式中,解釋如下:

  • <命令>:就是add、set、replace等指令;
  • <鍵> - key:就是保存在服務器上唯一的一個標識符,不可以與其他的key沖突,否則會覆蓋掉原來的數(shù)據(jù)(使用set命令的話),這個key是為了能夠準確的存取一個數(shù)據(jù)項目;
  • <標記> - flag:標記的是一個16位的無符號整型數(shù)據(jù),用來設(shè)置服務器跟客戶端一些交互的操作;
  • <有效期> -expiration time:是數(shù)據(jù)在服務器上的有效期限,如果是0,則數(shù)據(jù)永遠有效,單位是秒,Memcached服務端會把一個數(shù)據(jù)的有效期設(shè)置為當前Unix時間+設(shè)置的有效時間;
  • <數(shù)據(jù)長度> - bytes:數(shù)據(jù)的長度,block data數(shù)據(jù)塊的長度,一般這這個長度結(jié)束后下一行跟著block data數(shù)據(jù)內(nèi)容,發(fā)送完數(shù)據(jù)以后,客戶端一般等待服務器端的返回;

1、set指令使用示例

[root@memcache1 ~]# telnet 192.168.171.132 11211   #連接到memcached數(shù)據(jù)庫
set lisi 0 0  3    3       #插入一個數(shù)據(jù)
aaa              #插入的數(shù)據(jù)為aaa
STORED             #返回“STORED”則表示插入成功
get lisi                  #查詢插入的數(shù)據(jù)
VALUE lisi 0 3          
aaa
END
set lisi 0 0 4          #修改“l(fā)isi”這個key的值為bbbb
bbbb
STORED
get lisi          #再次查看,確定更改成功
VALUE lisi 0 4
bbbb

2、add指令使用示例

以下實例中我們設(shè)置:
? key → new_key
? flag → 0
? exptime → 900 (以秒為單位)
? bytes → 10 (數(shù)據(jù)存儲的字節(jié)數(shù))
? value → data_value

add new_key 0 900 10
data_value
STORED
get new_key
VALUE new_key 0 10
data_value
END

輸出
如果數(shù)據(jù)添加成功,則輸出:
STORED

輸出信息說明:
? STORED:保存成功后輸出。
? NOT_STORED :在保持失敗后輸出。

3、replace 命令
Memcached replace 命令用于替換已存在的 key( 鍵) ) 的 value( 數(shù)據(jù)值) )。
如果 key 不存在,則替換失敗,并且將獲得響應 NOT_STORED。

replace 命令的基本語法格式如下:
replace key flags exptime bytes [noreply] value

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? flags:可以包括鍵值對的整型參數(shù),客戶機使用它存儲關(guān)于鍵值對的額外信息 。
? exptime:在緩存中保存鍵值對的時間長度(以秒為單位,0 表示永遠)
? bytes:在緩存中存儲的字節(jié)數(shù)
? noreply(可選): 該參數(shù)告知服務器不需要返回數(shù)據(jù)
? value:存儲的值(始終位于第二行)(可直接理解為 key-value 結(jié)構(gòu)中的 value)

使用實例

以下實例中將設(shè)置:
? key → mykey
? flag → 0
? exptime → 900 (以秒為單位)
? bytes → 10 (數(shù)據(jù)存儲的字節(jié)數(shù))
? value → data_value

以下實例中我們使用的鍵位 'mykey' 并存儲對應的值 data_value。執(zhí)行后我們替換相同的 key 的值為'some_other_value'。

add mykey 0 900 10
data_value
STORED
get mykey
VALUE mykey 0 10
data_value
END
replace mykey 0 900 16
some_other_value
get mykey
VALUE mykey 0 16
some_other_value
END

如果數(shù)據(jù)添加成功,則輸出:
STORED
輸出信息說明:
? STORED:保存成功后輸出。
? NOT_STORED:執(zhí)行替換失敗后輸出。~~~~

4、append 命令
append 命令用于向已存在 key( 鍵) ) 的 value( 數(shù)據(jù)值) ) 后面追加數(shù)據(jù) 。
語法:
append 命令的基本語法格式如下:
append key flags exptime bytes [noreply] value

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? flags:可以包括鍵值對的整型參數(shù),客戶機使用它存儲關(guān)于鍵值對的額外信息 。
? exptime:在緩存中保存鍵值對的時間長度(以秒為單位,0 表示永遠)
? bytes:在緩存中存儲的字節(jié)數(shù)
? noreply(可選): 該參數(shù)告知服務器不需要返回數(shù)據(jù)
? value:存儲的值(始終位于第二行)(可直接理解為 key-value 結(jié)構(gòu)中的 value)
.
實例如下:
? 首先我們在 Memcached 中存儲一個鍵 runoob,其值為 memcached。
? 然后,我們使用 get 命令檢索該值。
? 然后,我們使用 append 命令在鍵為 runoob 的值后面追加 "redis"。
? 最后,我們再使用 get 命令檢索該值。

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
append runoob 0 900 5
redis
STORED
get runoob
VALUE runoob 0 14
memcachedredis
END

輸出
如果數(shù)據(jù)添加成功,則輸出:
STORED

輸出信息說明:
? STORED:保存成功后輸出。
? NOT_STORED:該鍵在 Memcached 上不存在。
? CLIENT_ERROR:執(zhí)行錯誤。

5、prepend 命令
prepend 命令用于向已存在 key( 鍵) ) 的 value( 數(shù)據(jù)值) ) 前面追加數(shù)據(jù) ,與append正好相反。
語法:
prepend 命令的基本語法格式如下:
prepend key flags exptime bytes [noreply] value

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? flags:可以包括鍵值對的整型參數(shù),客戶機使用它存儲關(guān)于鍵值對的額外信息 。
? exptime:在緩存中保存鍵值對的時間長度(以秒為單位,0 表示永遠)
? bytes:在緩存中存儲的字節(jié)數(shù)
? noreply(可選): 該參數(shù)告知服務器不需要返回數(shù)據(jù)
? value:存儲的值(始終位于第二行)(可直接理解為 key-value 結(jié)構(gòu)中的 value)

實例如下:
? 首先我們在 Memcached 中存儲一個鍵 runoob,其值為 memcached。
? 然后,我們使用 get 命令檢索該值。
? 然后,我們使用 prepend 命令在鍵為 runoob 的值后面追加 "redis"。
? 最后,我們再使用 get 命令檢索該值。

set runoob 0 900 9

> memcached
> STORED
> get runoob
> VALUE runoob 0 14
> memcached
> END
> prepend runoob 0 900 5
> redis
> STORED
> get runoob
> VALUE runoob 0 14
> redismemcached
END 

如果數(shù)據(jù)添加成功,則輸出:
STORED
輸出信息說明:
? STORED:保存成功后輸出。
? NOT_STORED:該鍵在 Memcached 上不存在。
? CLIENT_ERROR:執(zhí)行錯誤。
6、cas命令
CAS(Check-And-Set 或 Compare-And-Swap) 命令用于執(zhí)行一個"檢查并設(shè)置"的操作它僅在當前客戶端最后一次取值后,該 key 對應的值沒有被其他客戶端修改的情況下, 才能夠?qū)⒅祵懭?。檢查是通過 cas_token 參數(shù)進行的, 這個參數(shù)是 Memcach 指定給已經(jīng)存在的元素的一個唯一的 64 位值。

CAS 命令的基本語法格式如下:
cas key flags exptime bytes unique_cas_token [noreply] value

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? flags:可以包括鍵值對的整型參數(shù),客戶機使用它存儲關(guān)于鍵值對的額外信息 。
? exptime:在緩存中保存鍵值對的時間長度(以秒為單位,0 表示永遠)
? bytes:在緩存中存儲的字節(jié)數(shù)
? unique_cas_token 通過 gets 命令獲取的一個唯一的 64 位值。
? noreply(可選): 該參數(shù)告知服務器不需要返回數(shù)據(jù)
? value:存儲的值(始終位于第二行)(可直接理解為 key-value 結(jié)構(gòu)中的 value)

要在 Memcached 上使用 CAS 命令,需要從 Memcached 服務商通過 gets 命令獲取令牌(token)。
gets 命令的功能類似于基本的 get 命令。兩個命令之間的差異在于,gets 返回的信息稍微多一些:64 位的整型值非常像名稱/值對的 "版本" 標識符。
實例步驟如下:
? 如果沒有設(shè)置唯一令牌,則 CAS 命令執(zhí)行錯誤。
? 如果鍵 key 不存在,執(zhí)行失敗。
? 添加鍵值對。
? 通過 gets 命令獲取唯一令牌。
? 使用 cas 命令更新數(shù)據(jù)
? 使用 get 命令查看數(shù)據(jù)是否更新

cas tp 0 900 9
ERROR <? 缺少 token
cas tp 0 900 9 2
memcached
NOT_FOUND <? 鍵 tp 不存在
set tp 0 900 9
memcached
STORED
gets tp
VALUE tp 0 9 1
memcached
END
cas tp 0 900 5 1
redis
STORED
get tp
VALUE tp 0 5
redis
END
輸出
如果數(shù)據(jù)添加成功,則輸出:
STORED
輸出信息說明:
? STORED:保存成功后輸出。
? ERROR:保存出錯或語法錯誤。
? EXISTS:在最后一次取值后另外一個用戶也在更新該數(shù)據(jù)。
? NOT_FOUND:Memcached 服務上不存在該鍵值。

.
二、常用的查找命令
1、 get命令
get 命令獲取存儲在 key( 鍵) ) 中的 value( 數(shù)據(jù)值) ) ,如果 key 不存在,則返回空。

get 命令的基本語法格式如下:
get key

多個 key 使用空格隔開,如下:
get key1 key2 key3
參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
實例
在以下實例中,我們使用 runoob 作為 key,過期時間設(shè)置為 900 秒。

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END

2、 gets 命令
gets 命令獲取帶有 CAS 令牌存 的 value( 數(shù)據(jù)值) ) ,如果 key 不存在,則返回空。

gets 命令的基本語法格式如下:
gets key
多個 key 使用空格隔開,如下:
gets key1 key2 key3
參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
實例
在以下實例中,我們使用 runoob 作為 key,過期時間設(shè)置為 900 秒。

set runoob 0 900 9
memcached
STORED
gets runoob
VALUE runoob 0 9 1
memcached
END 

在 使用 gets 命令的輸出結(jié)果中,在最后一列的數(shù)字 1 代表了 key 為 runoob 的 CAS 令牌。

3、delete 命令
delete 命令用于刪除已存在的 key(鍵)。

delete 命令的基本語法格式如下:
delete key [noreply]

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? noreply(可選): 該參數(shù)告知服務器不需要返回數(shù)據(jù)

實例
在以下實例中,我們使用 runoob 作為 key,過期時間設(shè)置為 900 秒。之后我們使用 delete 命令刪除該 key。

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
delete runoob
DELETED
get runoob
END
delete runoob
NOT_FOUND 

輸出信息說明:
? DELETED:刪除成功。
? ERROR:語法錯誤或刪除失敗。
? NOT_FOUND:key 不存在。

4、 incr 與 decr 命令
incr 與 decr 命令用于對已存在的 key(鍵) 的數(shù)字值進行自增或自減操作。
incr 與 decr 命令操作的數(shù)據(jù)必須是十進制的 32 位無符號整數(shù)。
如果 key 不存在返回 NOT_FOUND,如果鍵的值不為數(shù)字,則返回 CLIENT_ERROR,其他錯誤返回 ERROR。
incr 命令

incr 命令的基本語法格式如下:
incr key increment_value

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? increment_value: 增加的數(shù)值。
實例
在以下實例中,我們使用 visitors 作為 key,初始值為 10,之后進行加 5 操作。

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END
輸出信息說明:
? NOT_FOUND:key 不存在。
? CLIENT_ERROR:自增值不是對象。
? ERROR 其他錯誤,如語法錯誤等。

decr 命令的基本語法格式如下:
decr key decrement_value

參數(shù)說明如下:
? key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
? decrement_value: 減少的數(shù)值。
實例

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
decr visitors 5
5
get visitors
VALUE
visitors 0 1
5
END
輸出信息說明:
? NOT_FOUND:key 不存在。
? CLIENT_ERROR:自增值不是對象。
? ERROR 其他錯誤,如語法錯誤等。

5、 stats 命令
stats 命令用于返回統(tǒng)計信息例如 PID(進程號)、版本號、連接數(shù)等。

stats 命令的基本語法格式如下:
stats
實例
在以下實例中,我們使用了 stats 命令來輸出 Memcached 服務信息。

stats

這里顯示了很多狀態(tài)信息,下邊詳細解釋每個狀態(tài)項:
? pid: memcache 服務器進程 ID
? uptime:服務器已運行秒數(shù)
? time:服務器當前 Unix 時間戳
? version:memcache 版本
? pointer_size:操作系統(tǒng)指針大小
? rusage_user:進程累計用戶時間
? rusage_system:進程累計系統(tǒng)時間
? curr_connections:當前連接數(shù)量
? total_connections:Memcached 運行以來連接總數(shù)
? connection_structures:Memcached 分配的連接結(jié)構(gòu)數(shù)量
? cmd_get:get 命令請求次數(shù)
? cmd_set:set 命令請求次數(shù)
? cmd_flush:flush 命令請求次數(shù)
? get_hits:get 命令命中次數(shù)
? get_misses:get 命令未命中次數(shù)
? delete_misses:delete 命令未命中次數(shù)
? delete_hits:delete 命令命中次數(shù)
? incr_misses:incr 命令未命中次數(shù)
? incr_hits:incr 命令命中次數(shù)
? decr_misses:decr 命令未命中次數(shù)
? decr_hits:decr 命令命中次數(shù)
? cas_misses:cas 命令未命中次數(shù)
? cas_hits:cas 命令命中次數(shù)
? cas_badval:使用擦拭次數(shù)
? auth_cmds:認證命令處理的次數(shù)
? auth_errors:認證失敗數(shù)目
? bytes_read:讀取總字節(jié)數(shù)
? bytes_written:發(fā)送總字節(jié)數(shù)
? limit_maxbytes:分配的內(nèi)存總大?。ㄗ止?jié))
? accepting_conns:服務器是否達到過最大連接(0/1)
? listen_disabled_num:失效的監(jiān)聽數(shù)
? threads:當前線程數(shù)
? conn_yields:連接操作主動放棄數(shù)目
? bytes:當前存儲占用的字節(jié)數(shù)
? curr_items:當前存儲的數(shù)據(jù)總數(shù)
? total_items:啟動以來存儲的數(shù)據(jù)總數(shù)
? evictions:LRU 釋放的對象數(shù)目
? reclaimed:已過期的數(shù)據(jù)條目來存儲新數(shù)據(jù)的數(shù)目

6、stats items 命令
stats items 命令用于顯示各個 slab 中 item 的數(shù)目和存儲時長(最后一次訪問距離現(xiàn)在的秒數(shù))。

stats items 命令的基本語法格式如下:
stats items
7、stats slabs 命令
stats slabs 命令用于顯示各個 slab 的信息,包括 chunk 的大小、數(shù)目、使用情況等。

stats slabs 命令的基本語法格式如下:
stats slabs
8、 stats sizes 命令
Memcached stats sizes 命令用于顯示所有 item 的大小和個數(shù)。
該信息返回兩列,第一列是 item 的大小,第二列是 item 的個數(shù)。

stats sizes 命令的基本語法格式如下:
stats sizes
實例
stats sizes STAT 96 1 END
9、 flush_all 命令
flush_all 命令用于用于清理緩存中的所有 key=>value( 鍵 => 值) ) 對。
該命令提供了一個可選參數(shù) time,用于在指定的時間后執(zhí)行清理緩存操作。

flush_all 命令的基本語法格式如下:
flush_all [time] [noreply]
實例
清理緩存:

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
flush_all
OK
get runoob
END

網(wǎng)頁題目:Memcached常用指令
分享地址:http://jinyejixie.com/article24/gpecce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序做網(wǎng)站、網(wǎng)頁設(shè)計公司、手機網(wǎng)站建設(shè)標簽優(yōu)化、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
新田县| 盐边县| 瓦房店市| 古浪县| 华坪县| 乌苏市| 鹤壁市| 汉川市| 清丰县| 延吉市| 汾阳市| 宁蒗| 浪卡子县| 策勒县| 武胜县| 成武县| 商都县| 湖南省| 香河县| 上虞市| 达尔| 五常市| 洞口县| 马尔康县| 文成县| 项城市| 南投县| 邢台市| 顺平县| 通州市| 临澧县| 井冈山市| 洛南县| 定日县| 永靖县| 定边县| 且末县| 昌都县| 榕江县| 塔河县| 乌拉特前旗|