天天看点

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

<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&lt;string&gt; keys = new arraylist&lt;string&gt;();

            keys.add("hello");

            keys.add("test");

            map&lt;string, object&gt; 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