1.memcached服務協議
https://github.com/memcached/memcached/blob/master/doc/protocol.txt
2.memCached協議基本操作
1)存儲命令 set 數據塊 add replace 完整的存儲命令:其中\r\n是回車換行 <command name> <key> <flags> <exptime> <byteds>\r\n <data block>\r\n 樣例: set user 0 180 5 huang STORED get user VALUE user 0 5 huang END 2)讀取命令 get 關鍵字 3)其他命令 flush_all version stats
3. 下載Java MemCached客戶端,解壓縮後將所有jar文件拷貝到java工程的lib目錄下或者classpath目錄下
https://github.com/downloads/gwhalin/Memcached-Java-Client/java_memcached-release_2.6.6.zip
4.編寫Java訪問memcached服務端的代碼
package hxb.memcached; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class KypuloCachedManager { private static KypuloCachedManager cachedManager ; //MemCached客戶端類 private MemCachedClient memCachedClient = new MemCachedClient(); //MemCached服務端節點,在分佈式環境中包含了多個server private String[] memCachedServers = {"192.168.146.128:11211"}; //各服務端節點負載均衡權重數 private Integer[] weights ={3}; private KypuloCachedManager() { initCachedPool(); } private void initCachedPool() { SockIOPool pool = SockIOPool.getInstance(); pool.setServers(memCachedServers); pool.setWeights(weights); // 設置初始連接數、最小和最大連接數以及最大處理時間 pool.setInitConn( 5 ); pool.setMinConn( 5 ); pool.setMaxConn( 250 ); pool.setMaxIdle( 1000 * 60 * 60 * 6 ); // 設置主線程的睡眠時間 pool.setMaintSleep( 30 ); // 設置TCP的參數,連接超時等 pool.setNagle( false ); pool.setSocketTO( 3000 ); pool.setSocketConnectTO( 0 ); // 初始化連接池 pool.initialize(); } public synchronized static KypuloCachedManager getInstance() { if(cachedManager==null) { cachedManager= new KypuloCachedManager(); } return cachedManager; } /** * 緩存一個對象 * @param key 對象關鍵字 * @param value 需要存儲的對象 * @return 緩存成功返回true 失敗返回false */ public boolean add(String key, Object value) { return this.memCachedClient.add(key, value); } /** * 更新緩存中的一個對象 * @param key 對象關鍵字 * @param value 刷新的的對象 * @return */ public boolean update(String key , Object value) { return this.memCachedClient.replace(key, value); } /** * 獲取緩存中指定關鍵字的對象 * @param key 對象關鍵字 * @return 緩存的對象 */ public Object get(String key) { return this.memCachedClient.get(key); } public static void main(String[] args) { KypuloCachedManager cachedManagerInstance = KypuloCachedManager.getInstance(); cachedManagerInstance.add("username", "Kypulo"); System.out.println("Get username from cached:"+cachedManagerInstance.get("username")); cachedManagerInstance.update("username", "Huangxiaobing"); System.out.println("Get username from cached after update:"+cachedManagerInstance.get("username")); } }