Memcache参数
1、啟動Memcache 常用參數(shù)
-p <num>????? 設置TCP端口號(默認不設置為: 11211)
-U <num>????? UDP監(jiān)聽端口(默認: 11211, 0 時關閉)?
-l <ip_addr>? 綁定地址(默認:所有都允許,無論內(nèi)外網(wǎng)或者本機更換IP,有安全隱患,若設置為127.0.0.1就只能本機訪問)
-d??????????????????? 以daemon方式運行
-u <username> 綁定使用指定用于運行進程<username>
-m <num>????? 允許最大內(nèi)存用量,單位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 命令執(zhí)行最簡單的操作。這些命令和操作包括:
- set
- add
- replace
- get
- delete
?
前三個命令是用于操作存儲在 memcached 中的鍵值對的標準修改命令。它們都非常簡單易用,且都使用如下 所示的語法:
command <key> <flags> <expiration time> <bytes> <value>表 1 定義了 memcached 修改命令的參數(shù)和用法。
表 1. memcached 修改命令參數(shù)
| key | key 用于查找緩存值 |
| flags | 可以包括鍵值對的整型參數(shù),客戶機使用它存儲關于鍵值對的額外信息 |
| expiration time | 在緩存中保存鍵值對的時間長度(以秒為單位,0 表示永遠) |
| bytes | 在緩存中存儲的字節(jié)點 |
| value | 存儲的值(始終位于第二行) |
現(xiàn)在,我們來看看這些命令的實際使用。
3.1 set?
set?命令用于向緩存添加新的鍵值對。如果鍵已經(jīng)存在,則之前的值將被替換。
注意以下交互,它使用了?set?命令:
| set userId 0 0 5 12345 STORED |
如果使用?set?命令正確設定了鍵值對,服務器將使用單詞?STORED?進行響應。本示例向緩存中添加了一個鍵值對,其鍵為userId,其值為12345。并將過期時間設置為 0,這將向 memcached 通知您希望將此值存儲在緩存中直到刪除它為止。
3.2 add?
僅當緩存中不存在鍵時,add?命令才會向緩存中添加一個鍵值對。如果緩存中已經(jīng)存在鍵,則之前的值將仍然保持相同,并且您將獲得響應NOT_STORED。
下面是使用?add?命令的標準交互:
| set userId 0 0 5 12345 STOREDadd userId 0 0 5 55555 NOT_STOREDadd companyId 0 0 3 564 STORED |
3.3 replace?
僅當鍵已經(jīng)存在時,replace?命令才會替換緩存中的鍵。如果緩存中不存在鍵,那么您將從 memcached 服務器接受到一條?NOT_STORED?響應。
下面是使用?replace?命令的標準交互:
| replace accountId 0 0 5 67890 NOT_STOREDset accountId 0 0 5 67890 STOREDreplace accountId 0 0 5 55555 STORED |
最后兩個基本命令是?get?和?delete。這些命令相當容易理解,并且使用了類似的語法,如下所示:
| command <key> |
接下來看這些命令的應用。
3.4 get?
get?命令用于檢索與之前添加的鍵值對相關的值。您將使用?get?執(zhí)行大多數(shù)檢索操作。
下面是使用?get?命令的典型交互:
| set userId 0 0 5 12345 STOREDget userId VALUE userId 0 5 12345 ENDget bob END |
如您所見,get?命令相當簡單。您使用一個鍵來調(diào)用?get,如果這個鍵存在于緩存中,則返回相應的值。如果不存在,則不返回任何內(nèi)容。
3.5 delete?
最后一個基本命令是?delete。delete?命令用于刪除 memcached 中的任何現(xiàn)有值。您將使用一個鍵調(diào)用delete,如果該鍵存在于緩存中,則刪除該值。如果不存在,則返回一條NOT_FOUND?消息。
下面是使用?delete?命令的客戶機服務器交互:
| set userId 0 0 5 98765 STOREDdelete bob NOT_FOUNDdelete userId DELETEDget userId END |
可以在 memcached 中使用的兩個高級命令是?gets?和?cas。gets?和cas?命令需要結(jié)合使用。您將使用這兩個命令來確保不會將現(xiàn)有的名稱/值對設置為新值(如果該值已經(jīng)更新過)。我們來分別看看這些命令。
3.6 gets?
gets?命令的功能類似于基本的?get?命令。兩個命令之間的差異在于,gets?返回的信息稍微多一些:64 位的整型值非常像名稱/值對的 “版本” 標識符。
下面是使用?gets?命令的客戶機服務器交互:
| set userId 0 0 5 12345 STOREDget userId VALUE userId 0 5 12345 ENDgets userId VALUE userId 0 5 <span class="boldcode"><strong>4</strong></span> 12345 END |
考慮?get?和?gets?命令之間的差異。gets?命令將返回一個額外的值 — 在本例中是整型值 4,用于標識名稱/值對。如果對此名稱/值對執(zhí)行另一個set?命令,則gets?返回的額外值將會發(fā)生更改,以表明名稱/值對已經(jīng)被更新。清單 6 顯示了一個例子:
清單 6. set 更新版本指示符
| set userId 0 0 5 33333 STOREDgets userId VALUE userId 0 5 <span class="boldcode"><strong>5</strong></span> 33333 END |
您看到?gets?返回的值了嗎?它已經(jīng)更新為 5。您每次修改名稱/值對時,該值都會發(fā)生更改。
3.7 cas?
cas(check 和 set)是一個非常便捷的 memcached 命令,用于設置名稱/值對的值(如果該名稱/值對在您上次執(zhí)行?gets?后沒有更新過)。它使用與?set命令相類似的語法,但包括一個額外的值:gets?返回的額外值。
注意以下使用?cas?命令的交互:
| set userId 0 0 5 55555 STOREDgets userId VALUE userId 0 5 <span class="boldcode"><strong>6</strong></span> 55555 ENDcas userId 0 0 5 <span class="boldcode"><strong>6</strong></span> 33333 STORED |
如您所見,我使用額外的整型值 6 來調(diào)用?gets?命令,并且操作運行非常順序。現(xiàn)在,我們來看看清單 7 中的一系列命令:
清單 7. 使用舊版本指示符的?cas?命令
| set userId 0 0 5 55555 STOREDgets userId VALUE userId 0 5 <span class="boldcode"><strong>8</strong></span> 55555 ENDcas userId 0 0 5 <span class="boldcode"><strong>6</strong></span> 33333 EXISTS |
注意,我并未使用?gets?最近返回的整型值,并且?cas?命令返回 EXISTS 值以示失敗。從本質(zhì)上說,同時使用gets?和cas?命令可以防止您使用自上次讀取后經(jīng)過更新的名稱/值對。
緩存管理命令
最后兩個 memcached 命令用于監(jiān)控和清理 memcached 實例。它們是?stats?和?flush_all?命令。
3.8 stats?
stats?命令的功能正如其名:轉(zhuǎn)儲所連接的 memcached 實例的當前統(tǒng)計數(shù)據(jù)。在下例中,執(zhí)行?stats?命令顯示了關于當前 memcached 實例的信息:
STAT uptime 1027046??????????????????????? 服務器運行秒數(shù)
STAT time 1273043062?????????????????????? 服務器當前unix時間戳
STAT version 1.4.4???????????????????????? 服務器版本
STAT pointer_size 64?????????????????????? 操作系統(tǒng)字大小(這臺服務器是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????????????? 服務器分配的連接結(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ù)
此處的大多數(shù)輸出都非常容易理解。稍后在討論緩存性能時,我還將詳細解釋這些值的含義。至于目前,我們先來看看輸出,然后再使用新的鍵來運行一些?set?命令,并再次運行stats?命令,注意發(fā)生了哪些變化。
3.9 flush_all?
flush_all?是最后一個要介紹的命令。這個最簡單的命令僅用于清理緩存中的所有名稱/值對。如果您需要將緩存重置到干凈的狀態(tài),則?flush_all?能提供很大的用處。下面是一個使用?flush_all?的例子:
| set userId 0 0 5 55555 STOREDget userId VALUE userId 0 5 55555 ENDflush_all OKget userId END |
總結(jié)
以上是生活随笔為你收集整理的Memcache参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 减小Delphi的Exe文件大小
- 下一篇: 隐藏JqueryMobile中的Head