基于java nio的memcached客户端——xmemcached

88447114 2016-09-19

JavamemcachedGoogle编程Gmail

1、xmemcached是什么?

xmemcached是基于javanio实现的memcached客户端API。

实际上是基于我实现的一个简单nio框架http://code.google.com/p/yanf4j/的基础上实现的(目前是基于yanf4j0.52),核心代码不超过1000行,序列化机制直接挪用spymemcached的Transcoder。

性能方面,在读写简单类型上比之spymemcached还是有差距,在读写比较大的对象(如集合)有效率优势。

当前0.50-beta版本,仅支持单个memcached服务器,以后考虑扩展。目前已经支持get、set、add、replace、delete、incr、decr、version这几个协议。API为阻塞模型,而非spymemcached的异步模式,异步模型在批处理的时候有优势,但是阻塞模式在编程难度和使用上会容易很多。

2、为什么叫xmemcached?

因为我在厦门(XM)混饭......

3、xmemcached的下载和使用

项目主页:http://code.google.com/p/xmemcached/

下载地址:http://code.google.com/p/xmemcached/downloads/list

下载的压缩包中包括了依赖库、源码和打包后的jar,放到项目的lib目录下即可使用。

示例参考:

<!---->packagenet.rubyeye.xmemcached.test;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Map;

importjava.io.Serializable;

importnet.rubyeye.xmemcached.XMemcachedClient;

classNameimplementsSerializable{

StringfirstName;

StringlastName;

intage;

intmoney;

publicName(StringfirstName,StringlastName,intage,intmoney){

super();

this.firstName=firstName;

this.lastName=lastName;

this.age=age;

this.money=money;

}

publicStringtoString(){

return"["+firstName+""+lastName+",age="+age+",money="

+money+"]";

}

}

publicclassExample{

publicstaticvoidmain(String[]args){

try{

Stringip="192.168.222.100";

intport=11211;

XMemcachedClientclient=newXMemcachedClient(ip,port);

//存储操作

if(!client.set("hello",0,"dennis")){

System.err.println("seterror");

}

client.add("hello",0,"dennis");

client.replace("hello",0,"dennis");

//get操作

Stringname=(String)client.get("hello");

System.out.println(name);

//批量获取

List<String>keys=newArrayList<String>();

keys.add("hello");

keys.add("test");

Map<String,Object>map=client.get(keys);

System.out.println("mapsize:"+map.size());

//delete操作

if(!client.delete("hello",1000)){

System.err.println("deleteerror");

}

//incr,decr

client.incr("a",4);

client.decr("a",4);

//version

Stringversion=client.version();

System.out.println(version);

//增删改查自定义对象

Namedennis=newName("dennis","zhuang",26,-1);

System.out.println("dennis:"+dennis);

client.set("dennis",0,dennis);

NamecachedPerson=(Name)client.get("dennis");

System.out.println("cachedPerson:"+cachedPerson);

cachedPerson.money=-10000;

client.replace("dennis",0,cachedPerson);

NamecachedPerson2=(Name)client.get("dennis");

System.out.println("cachedPerson2:"+cachedPerson2);

//delete

client.delete("dennis");

System.out.println("afterdelete:"+client.get("dennis"));

client.shutdown();

}catch(Exceptione){

e.printStackTrace();

}

}

}

4、xmemcached的计划?

1)、添加多服务器和集群支持

2)、性能优化、重构

3)、添加cas原子操作以及更多协议支持

有兴趣的瞧瞧,提提建议。

相关推荐