首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Memcached 實戰指南:核心命令詳解與三大 Java 客戶端對比

     編輯:Java 相關知識

一、Memcached 核心命令速查

1. 狀態檢查

stats           # 服務整體運行狀態
stats items     # items 統計
stats slabs     # slabs 內存分配狀態(關注性能指標)
stats sizes     # 所有 item 大小分佈

2. 存儲操作

set key flags exptime bytes\r\nvalue\r\n  # 存值,存在則覆蓋
add key flags exptime bytes\r\nvalue\r\n  # 存值,存在則失敗
replace key flags exptime bytes\r\nvalue\r\n  # 替換,不存在則失敗
append key flags exptime bytes\r\nvalue\r\n  # 尾部追加
prepend key flags exptime bytes\r\nvalue\r\n  # 頭部追加
cas key flags exptime bytes casunique\r\nvalue\r\n  # 檢查並設置(樂觀鎖)
incr key value  # 自增
decr key value  # 自減

3. 讀取操作

get key           # 獲取單個值
gets key1 key2    # 獲取多個值(返回 cas token)

4. 刪除/清理

delete key        # 刪除指定 key
flush_all         # 清空所有數據(不釋放內存)

二、三大 Java 客戶端實現對比

客戶端特點依賴適用場景
Danga (Memcached-Java-Client)最早、最廣泛、運行穩定;基於 Socket 連接池commons-pool、slf4j傳統項目、穩定性優先
Spymemcached異步非阻塞、功能豐富;但單節點故障時數據不會自動重分佈,需修改源碼修復spymemcached-2.10.2.jar高併發異步場景(需注意故障轉移缺陷)
XMemcached基於 NIO、性能最優、資源消耗少;原淘寶團隊維護,現託管 GitHubxmemcached-version.jar高性能、大規模生產環境首選

三、代碼示例:三客戶端統一 CRUD 操作

1. Danga 客戶端

SockIOPool pool = SockIOPool.getInstance();
pool.setServers(new String[]{"10.90.11.142:11211"});
pool.setInitConn(10); pool.setMinConn(5); pool.setMaxConn(250);
pool.setMaxIdle(1000*60*60*3); pool.setNagle(false);
pool.initialize();

MemCachedClient client = new MemCachedClient();
client.add("aa", "11"); client.set("aa", "22");
System.out.println(client.get("aa")); // 22
client.delete("aa");

2. Spymemcached

MemcachedClient client = new MemcachedClient(new InetSocketAddress("10.90.11.142", 11211));
OperationFuture<Boolean> f = client.add("spy", 0, "spy1");
System.out.println(f.getStatus() + " " + client.get("spy"));
client.set("spy", 0, "spy2");
client.delete("spy");

3. XMemcached

MemcachedClient client = new XMemcachedClient("10.90.11.142", 11211);
client.add("xmemcached", 0, "x1");
client.set("xmemcached", 0, "x2");
client.delete("xmemcached");

四、選型建議

  • 新項目/高性能要求 → XMemcached(NIO、線程池隔離、故障自動轉移完善)。
  • 維護舊系統、追求穩定兼容 → Danga。
  • 需要異步 Future API、且能接受單點故障風險或願意二次開發 → Spymemcached。

五、生產環境優化提示

  1. 合理設置連接池大小(init/min/max),避免連接洩漏或耗盡。
  2. 啟用 setAliveCheck(true) 定期探活,剔除失效連接。
  3. 關鍵業務使用 CAS 實現樂觀鎖,防止併發覆蓋。
  4. 監控 stats slabs 關注內存碎片率,必要時調整 slab chunk size。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved