特別說明:一致性哈希配置(附件有個類配置參考)
a:spring:
<property name="sessionLocator">
<bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator" />
</property>
//使用一致性哈希(Consistent Hash Strategy) true或false:允許配置是否兼容 nginx-upstream-consistent
builder.setSessionLocator(new KetamaMemcachedSessionLocator(true));
1. 下載windows版本的Memcached:http://code.jellycan.com/memcached/
2.解壓之後放在硬盤的目錄下,如:D:\memcached . 然後在運行中輸入cmd進入命令行,進入到Memcached.exe 所在的目錄,例如:D:\memcached,然後輸入:Cmd代碼 收藏代碼
到memcached根目錄
1、安裝
memcached.exe –d install
2、啓動
memcached.exe -d start
此時memcached已經註冊爲開機啓動服務,完成安裝。
經實驗使用命令修改端口無效,相應的解決方案是修改註冊表:
通過修改註冊表來達到這個修改端口的目的。
在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 下面找到一個 ImagePath 的字符串項,正好是服務的執行路徑的字符串,雙擊該串,在後面加入 -l 192.168.1.135 -m 45 -p 12345 (訪問ip爲:192.168.1.135 使用45M內存,12345爲端口),再啓動服務。
現在來試試是否可以連接:
使用方法爲“telnet ip 端口號”,登錄後使用“stats”命令
cmd下
telnet 192.168.1.135 12345(注意:這裏只能用IP 不能用 localhost 或127.0.0.1)
然後使用:stats命令可以看到memcached的使用情況如下:
STAT uptime 760
STAT time 1311913149
STAT version 1.2.1
STAT pointer_size 32
STAT curr_items 0
STAT total_items 0
STAT bytes 0
STAT curr_connections 4
STAT total_connections 6
STAT connection_structures 5
STAT cmd_get 0
STAT cmd_set 0
STAT get_hits 0
STAT get_misses 0
STAT bytes_read 63
STAT bytes_written 793
STAT limit_maxbytes 10485760
END
-p 監聽的端口
-l 連接的IP地址, 默認是本機
-d start 啓動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u 以的身份運行 (僅在以root運行的時候有效)
-m 最大內存使用,單位MB。默認64MB
-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時連接數,默認是1024
-f 塊大小增長因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助
註冊表值代碼 收藏代碼
1. d:\memcached\memcached.exe" -d runservice -l 127.0.0.1 -m 3000 -c 2048
d:\memcached\memcached.exe" -d runservice -l 127.0.0.1 -m 3000 -c 2048
對Memcached緩存服務的狀態查詢,可以先telnet連接上服務:telnet 127.0.0.1 11211 ,然後使用 stats命令查看緩存服務的狀態,會返回如下的數據:
time: 1255537291 服務器當前的unix時間戳
total_items: 54 從服務器啓動以後存儲的items總數量
connection_structures: 19 服務器分配的連接構造數
version: 1.2.6 memcache版本
limit_maxbytes: 67108864 分配給memcache的內存大小(字節)
cmd_get: 1645 get命令(獲取)總請求次數
evictions: 0 爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後需
要刪除舊的items來得到空間分配給新的items)
total_connections: 19 從服務器啓動以後曾經打開過的連接數
bytes: 248723 當前服務器存儲items佔用的字節數
threads: 1 當前線程數
get_misses: 82 總未命中次數
pointer_size: 32 當前操作系統的指針大小(32位系統一般是32bit)
bytes_read: 490982 總讀取字節數(請求字節數)
uptime: 161 服務器已經運行的秒數
curr_connections: 18 當前打開着的連接數
pid: 2816 memcache服務器的進程ID
bytes_written: 16517259 總髮送字節數(結果字節數)
get_hits: 1563 總命中次數
cmd_set: 54 set命令(保存)總請求次數
curr_items: 28 服務器當前存儲的items數量
memcached能接受的key的最大長度是多少?
key 的最大長度是250個字符。需要注意的是,250是memcached服務器端內部的限制,如果您使用的客戶端支持”key的前綴”或類似特性,那麼 key(前綴+原始key)的最大長度是可以超過250個字符的。我們推薦使用使用較短的key,因爲可以節省內存和帶寬。
過期時間最大可以達到30天。memcached把傳入的過期時間(時間段)解釋成時間點後,一旦到了這個時間點,memcached就把item置爲失效狀態。這是一個簡單但obscure的機制。
memcached最大能存儲多大的單個item?
1MB。如果你的數據大於1MB,可以考慮在客戶端壓縮或拆分到多個key中。
爲什麼單個item的大小被限制在1M byte之內?
啊…這是一個大家經常問的問題!
簡單的回答:因爲內存分配器的算法就是這樣的