天天看點

轉:memcached指令行參數說明

1、啟動Memcache 常用參數

-p <num>      設定TCP端口号(預設不設定為: 11211)

-U <num>      UDP監聽端口(預設: 11211, 0 時關閉) 

-l <ip_addr>  綁定位址(預設:所有都允許,無論内外網或者本機更換IP,有安全隐患,若設定為127.0.0.1就隻能本機通路)

-d                    以daemon方式運作

-u <username> 綁定使用指定用于運作程序<username>

-m <num>      允許最大記憶體用量,機關M (預設: 64 MB)

-P <file>     将PID寫入檔案<file>,這樣可以使得後邊進行快速程序終止, 需要與-d 一起使用

在linux下:./usr/local/bin/memcached -d -u root  -l 192.168.1.197 -m 2048 -p 12121

在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500

在windows下注冊為服務後運作:

sc.exe create Memcached_srv binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″start= auto

net start Memcached

2、連接配接

telnet 127.0.0.1 11211

3、基本指令

您将使用五種基本 memcached 指令執行最簡單的操作。這些指令和操作包括:

  • set

  • add

  • replace

  • get

  • delete

前三個指令是用于操作存儲在 memcached 中的鍵值對的标準修改指令。它們都非常簡單易用,且都使用如下 所示的文法:

command <key> <flags> <expiration time> <bytes>
<value>
      

表 1 定義了 memcached 修改指令的參數和用法。

表 1. memcached 修改指令參數

參數 用法
key key 用于查找緩存值
flags 可以包括鍵值對的整型參數,客戶機使用它存儲關于鍵值對的額外資訊
expiration time 在緩存中儲存鍵值對的時間長度(以秒為機關,0 表示永遠)
bytes 在緩存中存儲的位元組點
value 存儲的值(始終位于第二行)

現在,我們來看看這些指令的實際使用。

3.1 set

set

指令用于向緩存添加新的鍵值對。如果鍵已經存在,則之前的值将被替換。

注意以下互動,它使用了

set

指令:

set userId 0 0 5
12345
STORED
      

如果使用

set

指令正确設定了鍵值對,伺服器将使用單詞 STORED 進行響應。本示例向緩存中添加了一個鍵值對,其鍵為

userId

,其值為

12345

。并将過期時間設定為 0,這将向 memcached 通知您希望将此值存儲在緩存中直到删除它為止。

3.2 add

僅當緩存中不存在鍵時,

add

指令才會向緩存中添加一個鍵值對。如果緩存中已經存在鍵,則之前的值将仍然保持相同,并且您将獲得響應

NOT_STORED。

下面是使用

add

指令的标準互動:

set userId 0 0 5
12345
STORED

add userId 0 0 5
55555
NOT_STORED

add companyId 0 0 3
564
STORED
      

3.3 replace

僅當鍵已經存在時,

replace

指令才會替換緩存中的鍵。如果緩存中不存在鍵,那麼您将從 memcached 伺服器接受到一條

NOT_STORED 響應。

replace

replace accountId 0 0 5
67890
NOT_STORED

set accountId 0 0 5
67890
STORED

replace accountId 0 0 5
55555
STORED
      

最後兩個基本指令是

get

delete

。這些指令相當容易了解,并且使用了類似的文法,如下所示:

command <key>
      

接下來看這些指令的應用。

3.4 get

get

指令用于檢索與之前添加的鍵值對相關的值。您将使用

get

執行大多數檢索操作。

get

指令的典型互動:

set userId 0 0 5
12345
STORED

get userId
VALUE userId 0 5
12345
END

get bob
END
      

如您所見,

get

指令相當簡單。您使用一個鍵來調用

get

,如果這個鍵存在于緩存中,則傳回相應的值。如果不存在,則不傳回任何内容。

3.5 delete

最後一個基本指令是

delete

delete

指令用于删除 memcached 中的任何現有值。您将使用一個鍵調用

delete

,如果該鍵存在于緩存中,則删除該值。如果不存在,則傳回一條NOT_FOUND 消息。

delete

指令的客戶機伺服器互動:

set userId 0 0 5
98765
STORED

delete bob
NOT_FOUND

delete userId
DELETED

get userId
END
      

可以在 memcached 中使用的兩個進階指令是

gets

cas

gets

cas

指令需要結合使用。您将使用這兩個指令來確定不會将現有的名稱/值對設定為新值(如果該值已經更新過)。我們來分别看看這些指令。

3.6 gets

gets

指令的功能類似于基本的

get

指令。兩個指令之間的差異在于,

gets

傳回的資訊稍微多一些:64 位的整型值非常像名稱/值對的 “版本” 辨別符。

gets

set userId 0 0 5
12345
STORED

get userId
VALUE userId 0 5
12345
END

gets userId
VALUE userId 0 5 4
12345
END
      

考慮

get

gets

指令之間的差異。

gets

指令将傳回一個額外的值 — 在本例中是整型值 4,用于辨別名稱/值對。如果對此名稱/值對執行另一個

set

指令,則

gets

傳回的額外值将會發生更改,以表明名稱/值對已經被更新。清單 6 顯示了一個例子:

清單 6. set 更新版本訓示符

set userId 0 0 5
33333
STORED

gets userId
VALUE userId 0 5 5
33333
END
      

您看到

gets

傳回的值了嗎?它已經更新為 5。您每次修改名稱/值對時,該值都會發生更改。

3.7 cas

cas

(check 和 set)是一個非常便捷的 memcached 指令,用于設定名稱/值對的值(如果該名稱/值對在您上次執行

gets

後沒有更新過)。它使用與

set

指令相類似的文法,但包括一個額外的值:

gets

傳回的額外值。

注意以下使用

cas

指令的互動:

set userId 0 0 5
55555
STORED

gets userId
VALUE userId 0 5 6
55555
END

cas userId 0 0 5 6
33333
STORED
      

如您所見,我使用額外的整型值 6 來調用

gets

指令,并且操作運作非常順序。現在,我們來看看清單 7 中的一系列指令:

清單 7. 使用舊版本訓示符的

cas

指令

set userId 0 0 5
55555
STORED

gets userId
VALUE userId 0 5 8
55555
END

cas userId 0 0 5 6
33333
EXISTS
      

注意,我并未使用

gets

最近傳回的整型值,并且

cas

指令傳回 EXISTS 值以示失敗。從本質上說,同時使用

gets

cas

指令可以防止您使用自上次讀取後經過更新的名稱/值對。

緩存管理指令

最後兩個 memcached 指令用于監控和清理 memcached 執行個體。它們是

stats

flush_all

指令。

3.8 stats

stats

指令的功能正如其名:轉儲所連接配接的 memcached 執行個體的目前統計資料。在下例中,執行

stats

指令顯示了關于目前 memcached 執行個體的資訊:

STAT pid 22459                             程序ID

STAT uptime 1027046                        伺服器運作秒數

STAT time 1273043062                       伺服器目前unix時間戳

STAT version 1.4.4                         伺服器版本

STAT pointer_size 64                       作業系統字大小(這台伺服器是64位的)

STAT rusage_user 0.040000                  程序累計使用者時間

STAT rusage_system 0.260000                程序累計系統時間

STAT curr_connections 10                   目前打開連接配接數

STAT total_connections 82                  曾打開的連接配接總數

STAT connection_structures 13              伺服器配置設定的連接配接結構數

STAT cmd_get 54                            執行get指令總數

STAT cmd_set 34                            執行set指令總數

STAT cmd_flush 3                           指向flush_all指令總數

STAT get_hits 9                            get命中次數

STAT get_misses 45                         get未命中次數

STAT delete_misses 5                       delete未命中次數

STAT delete_hits 1                         delete命中次數

STAT incr_misses 0                         incr未命中次數

STAT incr_hits 0                           incr命中次數

STAT decr_misses 0                         decr未命中次數

STAT decr_hits 0                           decr命中次數

STAT cas_misses 0    cas未命中次數

STAT cas_hits 0                            cas命中次數

STAT cas_badval 0                          使用擦拭次數

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785                      讀取位元組總數

STAT bytes_written 15222                   寫入位元組總數

STAT limit_maxbytes 1048576                配置設定的記憶體數(位元組)

STAT accepting_conns 1                     目前接受的連結數

STAT listen_disabled_num 0                

STAT threads 4                             線程數

STAT conn_yields 0

STAT bytes 0                               存儲item位元組數

STAT curr_items 0                          item個數

STAT total_items 34                        item總數

STAT evictions 0                           為擷取空間删除item的總數

此處的大多數輸出都非常容易了解。稍後在讨論緩存性能時,我還将詳細解釋這些值的含義。至于目前,我們先來看看輸出,然後再使用新的鍵來運作一些

set

指令,并再次運作

stats

指令,注意發生了哪些變化。

3.9 flush_all

flush_all

是最後一個要介紹的指令。這個最簡單的指令僅用于清理緩存中的所有名稱/值對。如果您需要将緩存重置到幹淨的狀态,則

flush_all

能提供很大的用處。下面是一個使用

flush_all

的例子:

set userId 0 0 5
55555
STORED

get userId
VALUE userId 0 5
55555
END

flush_all
OK

get userId
END
      

寵辱不驚,看庭前花開花落;去留無意,望天上雲卷雲舒

繼續閱讀