Java 連接 Memcached 服務
Windows 下安裝 Memcached http://www.runoob.com/memcached/window-install-memcached.html
通過 telnet 命令並指定主機ip和端口來連接 Memcached 服務。
telnet HOST PORT
telnet 127.0.0.1 11211
添加 Memcached jar 包
<dependency> <groupId>net.spy</groupId> <artifactId>spymemcached</artifactId> <version>2.9.1</version> </dependency>
以下程序假定 Memcached 服務的主機為 127.0.0.1,端口為 11211。如果是遠程訪問,記得在防火墻的入站規則中添加端口。
public class MemcachedJava { public static void main(String[] args) { try { // 連接本地的 Memcached 服務 MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessful."); Future fo = mcc.set("memcached", 10, "memcached");// 添加數據 System.out.println("set status:" + fo.get());// 輸出執行set方法後的狀態 System.out.println("get - " + mcc.get("memcached"));// 使用get方法獲取數據 fo = mcc.add("memcached", 10, "add");// 添加 System.out.println("add status:" + fo.get());// 輸出執行add方法後的狀態 System.out.println("add - " + mcc.get("memcached"));// 獲取鍵對應的值 fo = mcc.replace("memcached", 10, "memcached replace"); System.out.println("replace status:" + fo.get());// 輸出執行replace方法後的狀態 System.out.println("replace - " + mcc.get("memcached"));// 獲取鍵對應的值 fo = mcc.append("memcached", " append");// 對存在的key進行數據添加操作 System.out.println("append status:" + fo.get());// 輸出執行 append方法後的狀態 System.out.println("append - " + mcc.get("memcached"));// 獲取鍵對應的值 fo = mcc.prepend("memcached", "prepend ");// 對存在的key進行數據添加操作 System.out.println("prepend status:" + fo.get());// 輸出執行prepend方法後的狀態 System.out.println("prepend - " + mcc.get("memcached"));// 獲取鍵對應的值 CASValue casValue = mcc.gets("memcached");// 通過 gets 方法獲取 CAS token(令牌) System.out.println("CAS token - " + casValue);// 輸出 CAS token(令牌) 值 CASResponse casresp = mcc.cas("memcached", casValue.getCas(), " CAS");// 嘗試使用cas方法來更新數據 System.out.println("CAS Response - " + casresp);// 輸出 CAS 響應信息 System.out.println("CAS - " + mcc.get("memcached"));// 輸出值 fo = mcc.delete("memcached");// 對存在的key進行數據添加操作 System.out.println("delete status:" + fo.get());// 輸出執行 delete方法後的狀態 System.out.println("delete - " + mcc.get("memcached"));// 獲取鍵對應的值 Future number = mcc.set("number", 10, "1000");// 添加數字值 System.out.println("set status:" + number.get());// 輸出執行 set 方法後的狀態 System.out.println("incr - " + mcc.incr("number", 100));// 自增並輸出 System.out.println("decr - " + mcc.decr("number", 101));// 自減並輸出 // 關閉連接 mcc.shutdown(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
set 命令用於將 value(數據值) 存儲在指定的 key(鍵) 中。如果set的key已經存在,該命令可以更新該key所對應的原來的數據,也就是實現更新的作用。
add 命令用於將 value(數據值) 存儲在指定的 key(鍵) 中。如果 add 的 key 已經存在,則不會更新數據(過期的 key 會更新),之前的值將仍然保持相同。
replace 命令用於替換已存在的 key(鍵) 的 value(數據值)。如果 key 不存在,則替換失敗。
append 命令用於向已存在 key(鍵) 的 value(數據值) 後面追加數據 。
prepend 命令用於向已存在 key(鍵) 的 value(數據值) 前面追加數據 。
CAS(Check-And-Set 或 Compare-And-Swap) 命令用於執行一個"檢查並設置"的操作它僅在當前客戶端最後一次取值後,該key 對應的值沒有被其他客戶端修改的情況下, 才能夠將值寫入。
get 命令獲取存儲在 key(鍵) 中的 value(數據值) ,如果 key 不存在,則返回空。
gets 命令獲取帶有 CAS 令牌存 的 value(數據值) ,如果 key 不存在,則返回空。
delete 命令用於刪除已存在的 key(鍵)。
incr 與 decr 命令用於對已存在的 key(鍵) 的數字值進行自增或自減操作。incr 與 decr 命令操作的數據必須是十進制的32位無符號整數。如果 key 不存在返回 NOT_FOUND,如果鍵的值不為數字,則返回 CLIENT_ERROR,其他錯誤返回 ERROR。
stats 命令用於返回統計信息例如 PID(進程號)、版本號、連接數等。
stats items 命令用於顯示各個 slab 中 item 的數目和存儲時長(最後一次訪問距離現在的秒數)。
stats slabs 命令用於顯示各個slab的信息,包括chunk的大小、數目、使用情況等。
stats sizes 命令用於顯示所有item的大小和個數。該信息返回兩列,第一列是 item 的大小,第二列是 item 的個數。
flush_all 命令用於清理緩存中的所有 key=>value(鍵=>值) 對。該命令提供了一個可選參數 time,用於在制定的時間後執行清理緩存操作。
轉自http://www.runoob.com/memcached/java-memcached.html
Java 連接 Memcached 服務