<b>1、xmemcached是什麼?</b>
xmemcached是基于java nio實作的memcached用戶端api。
性能方面,在讀寫簡單類型上比之spymemcached還是有差距,在讀寫比較大的對象(如集合)有效率優勢。
當 前0.50-beta版本,僅支援單個memcached伺服器,以後考慮擴充。目前已經支援get、set、add、replace、delete、 incr、decr、version這幾個協定。api為阻塞模型,而非spymemcached的異步模式,異步模型在批處理的時候有優勢,但是阻塞模 式在程式設計難度和使用上會容易很多。
2、為什麼叫xmemcached?
因為我在廈門(xm)混飯......
3、xmemcached的下載下傳和使用
下載下傳的壓縮包中包括了依賴庫、源碼和打包後的jar,放到項目的lib目錄下即可使用。
示例參考:
package net.rubyeye.xmemcached.test;
import java.util.arraylist;
import java.util.list;
import java.util.map;
import java.io.serializable;
import net.rubyeye.xmemcached.xmemcachedclient;
class name implements serializable {
string firstname;
string lastname;
int age;
int money;
public name(string firstname, string lastname, int age, int money) {
super();
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
this.money = money;
}
public string tostring() {
return "[" + firstname + " " + lastname + ",age=" + age + ",money="
+ money + "]";
}
public class example {
public static void main(string[] args) {
try {
string ip = "192.168.222.100";
int port = 11211;
xmemcachedclient client = new xmemcachedclient(ip, port);
// 存儲操作
if (!client.set("hello", 0, "dennis")) {
system.err.println("set error");
}
client.add("hello", 0, "dennis");
client.replace("hello", 0, "dennis");
// get操作
string name = (string) client.get("hello");
system.out.println(name);
// 批量擷取
list<string> keys = new arraylist<string>();
keys.add("hello");
keys.add("test");
map<string, object> map = client.get(keys);
system.out.println("map size:"+map.size());
// delete操作
if (!client.delete("hello", 1000)) {
system.err.println("delete error");
// incr,decr
client.incr("a", 4);
client.decr("a", 4);
// version
string version = client.version();
system.out.println(version);
// 增删改查自定義對象
name dennis = new name("dennis", "zhuang", 26, -1);
system.out.println("dennis:" + dennis);
client.set("dennis", 0, dennis);
name cachedperson = (name) client.get("dennis");
system.out.println("cachedperson:" + cachedperson);
cachedperson.money = -10000;
client.replace("dennis", 0, cachedperson);
name cachedperson2 = (name) client.get("dennis");
system.out.println("cachedperson2:" + cachedperson2);
// delete
client.delete("dennis");
system.out.println("after delete:" + client.get("dennis"));
client.shutdown();
} catch (exception e) {
e.printstacktrace();
}
4、xmemcached的計劃?
1)、添加多伺服器和叢集支援
2)、性能優化、重構
3)、添加cas原子操作以及更多協定支援
有興趣的瞧瞧,提提建議。
文章轉自莊周夢蝶 ,原文釋出時間2009-03-03