<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