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

JavamemcachedGoogle编程Gmail
1、xmemcached是什么?
xmemcached是基于java nio实现的memcached客户端API。
实际上是基于我实现的一个简单nio框架 http://code.google.com/p/yanf4j/ 的基础上实现的(目前是基于yanf4j 0.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目录下即可使用。
示例参考:
<!---->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原子操作以及更多协议支持

有兴趣的瞧瞧,提提建议。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值