基于java nio的memcached客户端——xmemcached -pg电子游戏网站

`

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

    博客分类:
  • java

1、xmemcached是什么?

xmemcached是基于java nio实现的memcached客户端api。

实际上是基于我实现的一个简单nio框架 的基础上实现的(目前是基于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的下载和使用

项目澳门pg电子游戏主页:

下载地址:

下载的压缩包中包括了依赖库、源码和打包后的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原子操作以及更多协议支持

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

12
0
分享到:
评论
11 楼 hw7777777 2016-05-17  
非常感谢作者提供这么好的工具,在使用的过程中遇到一些问题?
1、使用连接池后,当一个节点断开连接后会一直尝试连接并报出connect refused 异常?是因为有重试机制吗?
2、动态添加节点addserver时当节点服务通信异常也会抛出connect refused 异常,并一直重试?

麻烦作者提供解决思路,非常感谢
10 楼 2011-02-17  
项目使用中,向作者学习
9 楼 2009-12-09  
不好意思,列表是倒序排的,看了半天才看到在前面了  .还以为缓存没更新过来呢...
8 楼 2009-12-09  
你好,请问使用xmemcached的时候,怎么样使缓存中的数据同步?
比如 我要缓存一个在线社员列表,是登录一个添加一个,登出一个删除一个key
还是写个定时任务 扫描数据库 有更新的替换全部列表呢?
7 楼 2009-12-09  
你好,请问使用xmemcached的时候,怎么样使缓存中的数据同步?
比如 我要缓存一个在线社员列表,是登录一个添加一个,登出一个删除一个key
还是写个定时任务 扫描数据库 有更新的替换全部列表呢?
6 楼 2009-11-10  
5 楼 dennis_zane 2009-11-03  
yuyee 写道
有没中文版的....

http://code.google.com/p/xmemcached/wiki/example_zh
中文指南
4 楼 2009-11-03  
有没中文版的....
3 楼 2009-08-17  
相关文档太少了,注解不全,希望完善!
2 楼 dennis_zane 2009-05-27  
fly_hyp 写道

测试过了性能非常的好。

呵呵,谢谢,欢迎使用,有任何bug和建议,请及时发给我,我的email killme2008@gmail.com
1 楼 2009-05-27  
测试过了性能非常的好。

相关推荐

    memcached的java客户端已经存在三种了:官方提供的基于传统阻塞io由greg whalin维护的客户端;dustin sallings实现的基于java nio的spymemcached;xmemcached

    xmemcached是基于java nio实现的高性能可扩展的memcached客户端。它的主要特点: 高性能,稳定可靠,已经在众多公司的众多项目里得到应用。 功能完备:客户端分布式、权重、最新最完整的协议支持。 ...

    2.spymemcached,支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常 报timeout等相关异常。 3.xmemcached,xmemcached也使用得比较广泛,而且...

    xmemcached是基于 java nio的memcached客户端,java nio相比于传统阻塞 io 模型来说,有 效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞 io为了提高效率,需要 创建一定数量的连接形成连接池,而 nio...

    memcached的java客户端已经存在两个了:官方提供的基于传统阻塞io由greg whalin维护的客户端、dustin sallings实现的基于java nio的spymemcached。另外还有一些在此基础上的改进版本。相比于这些客户端,xmemcached...

    介绍xmemcached是java中的一种高性能,易于使用的阻塞多线程memcached客户端。 它是基于nio的,并且经过了精心设计,以实现最佳性能。快速开始:有助于源代码并将其签出到本地计算机。 进行更改并创建拉取请求。 ...

    基于java nio实现的高性能可扩展的memcached客户端。虽然java的memcached库已经很多,但是这些java开源memcached库并没有一个是基于nio框架编写,因此并不能够充分发挥java nio的性能优势.... xmemcached的项目澳门pg电子游戏主页...

    xmemcached is a high performance, easy to use blocking multithreaded memcached client in java. it's nio based (using my opensource nio framework :yanf4j), and was carefully tuned to get top ...

    xmemcached 是一个高性能、易用的 java 阻塞多线程 memcached 客户端。 它基于 nio 并经过精心设计以获得最佳性能。 ##新闻和下载 。 maven 依赖: <groupid>com.googlecode.xmemcached</groupid> ...

    请问一下 目前 xmemcached 执行的jdk版本是多少? 目前仅兼容到1.5,1.4不兼容;如果需要,你可以自己编译打包一个版本。 从我的角度,不推荐在1.4上使用nio,nio在1.4上的bug很多。 这个包是我做的演示工程。

    spring xmemcached aop切面 需要xmemcached-1.2.5 spring-2.5.6 class="net.rubyeye.xmemcached.utils.xmemcachedclientfactorybean" destroy-method="shutdown"> ${xmemcached_servers} <!-- ...

    simple-spring-memcached-3.5.0.jar slf4j-api-1.6.0.jar slf4j-log4j12-1.6.0.jar solr-solrj-3.4.0.jar spring-aop-4.1.6.release.jar spring-aspects-4.1.6.release.jar spring-beans-4.1.6.release.jar ...

global site tag (gtag.js) - google analytics
网站地图