`
MauerSu
  • 浏览: 493317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Memcached 客户端程序三种API的比较

 
阅读更多
源:http://blog.csdn.net/arui_email/article/details/8129400
评:

3)      xmemcached 
      
    Xmemcached的官方网址是:http://code.google.com/p/xmemcached/,可以从其官网上下载最新版本的1.2.4 来使用。地址是:http://xmemcached.googlecode.com/files/xmemcached-1.2.4-src.tar.gz 。 
      
    示例代码如下: 
      
    package temp; 
      
      
      
    import java.io.IOException; 
      
    import java.util.concurrent.TimeoutException; 
      
      
      
    import net.rubyeye.xmemcached.utils.AddrUtil; 
      
    import net.rubyeye.xmemcached.MemcachedClient; 
      
    import net.rubyeye.xmemcached.MemcachedClientBuilder; 
      
    import net.rubyeye.xmemcached.XMemcachedClientBuilder; 
      
    import net.rubyeye.xmemcached.exception.MemcachedException; 
      
      
      
    public class TestXMemcache { 
      
        public static void main(String[] args) { 
      
           MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil 
      
                  .getAddresses("10.11.15.222:10000")); 
      
           MemcachedClient memcachedClient; 
      
           try { 
      
               memcachedClient = builder.build(); 
      
      
      
               memcachedClient.set("hello", 0, "Hello,xmemcached"); 
      
               String value = memcachedClient.get("hello"); 
      
               System.out.println("hello=" + value); 
      
               memcachedClient.delete("hello"); 
      
               value = memcachedClient.get("hello"); 
      
               System.out.println("hello=" + value); 
      
               // close memcached client 
      
               memcachedClient.shutdown(); 
      
           } catch (MemcachedException e) { 
      
               System.err.println("MemcachedClient operation fail"); 
      
               e.printStackTrace(); 
      
           } catch (TimeoutException e) { 
      
               System.err.println("MemcachedClient operation timeout"); 
      
               e.printStackTrace(); 
      
           } catch (InterruptedException e) { 
      
               // ignore 
      
           }catch (IOException e) { 
      
               System.err.println("Shutdown MemcachedClient fail"); 
      
               e.printStackTrace(); 
      
           } 
      
        } 
      
    } 
-------------------
[plain] view plaincopyprint?

                Memcached 客户端程序 
      
    Memcached的java客户端已经存在三种了: 
      
    ?  官方提供的基于传统阻塞io由Greg Whalin维护的客户端 
      
    ?  Dustin Sallings实现的基于java nio的Spymemcached 
      
    ?  XMemcached 
      
     
    1. 三种API比较 
     1)      memcached client for java 
      
    较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。  
     
     
    2)      spymemcached 
      
    A simple, asynchronous, single-threaded memcached client written in java. 支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常 报timeOut等相关异常。  
     
     
    3)      xmemcached 
      
    XMemcached同样是基于java nio的客户端,java nio相比于传统阻塞io模型来说,有效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞IO为了提高效率,需要创建一定数量的连接形成连接 池,而nio仅需要一个连接即可(当然,nio也是可以做池化处理),相对来说减少了线程创建和切换的开销,这一点在高并发下特别明显。因此 XMemcached与Spymemcached在性能都非常优秀,在某些方面(存储的数据比较小的情况下)Xmemcached比 Spymemcached的表现更为优秀,具体可以看这个Java Memcached Clients Benchmark。 
      
     
    2.  建议 
      
    由于memcached client for java发布了新版本,性能上有所提高,并且运行稳定,所以建议使用memcached client for java。 
      
    XMemcached也使用得比较广泛,而且有较详细的中文API文档,具有如下特点:高性 能、支持完整的协议、支持客户端分布、允许设置节点权重、动态增删节点、支持JMX、与Spring框架和Hibernate-memcached的集 成、客户端连接池、可扩展性好等。 
      
    下面给出这三种客户端的示例程序。 
      
     
    3.  示例程序  
    1)      memcached client for java 
      
    从前面介绍的Java环境的Memcached客户端程序项目网址里,下载最新版的客户端程 序包:java_memcached-release_2.5.1.zip,解压后,文件夹里找到java_memcached- release_2.5.1.jar,这个就是客户端的JAR包。将此JAR包添加到项目的构建路径里,则项目中,就可以使用Memcached了。 
      
    示例代码如下: 
      
    package temp; 
      
      
      
    import com.danga.MemCached.*; 
      
    import org.apache.log4j.*; 
      
      
      
    public class CacheTest { 
      
        public static void main(String[] args) { 
      
           /** 
      
            * 初始化SockIOPool,管理memcached的连接池 
      
            * */ 
      
           String[] servers = { "10.11.15.222:10000" }; 
      
           SockIOPool pool = SockIOPool.getInstance(); 
      
           pool.setServers(servers); 
      
           pool.setFailover(true); 
      
           pool.setInitConn(10); 
      
           pool.setMinConn(5); 
      
           pool.setMaxConn(250); 
      
           pool.setMaintSleep(30); 
      
           pool.setNagle(false); 
      
           pool.setSocketTO(3000); 
      
           pool.setAliveCheck(true); 
      
           pool.initialize(); 
      
      
      
           /** 
      
            * 建立MemcachedClient实例 
      
            * */ 
      
           MemCachedClient memCachedClient = new MemCachedClient(); 
      
           for (int i = 0; i < 1000; i++) { 
      
               /** 
      
                * 将对象加入到memcached缓存 
      
                * */ 
      
               boolean success = memCachedClient.set("" + i, "Hello!"); 
      
               /** 
      
                * 从memcached缓存中按key值取对象 
      
                * */ 
      
               String result = (String) memCachedClient.get("" + i); 
      
               System.out.println(String.format("set( %d ): %s", i, success)); 
      
               System.out.println(String.format("get( %d ): %s", i, result)); 
      
           } 
      
        } 
      
    } 
      
     
    2)      spymemcached 
      
    spymemcached当前版本是2.5版本,官方网址是:http://code.google.com/p/spymemcached/。可以从地址:http://spymemcached.googlecode.com/files/memcached-2.5.jar 下载最新版本来使用。 
      
    示例代码如下: 
      
    package temp; 
      
      
      
    import java.net.InetSocketAddress; 
      
    import java.util.concurrent.Future; 
      
      
      
    import net.spy.memcached.MemcachedClient; 
      
      
      
    public class TestSpyMemcache { 
      
        public static void main(String[] args) { 
      
           // 保存对象 
      
           try { 
      
               /* 建立MemcachedClient 实例,并指定memcached服务的IP地址和端口号 */ 
      
               MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000)); 
      
               Future<Boolean> b = null; 
      
               /* 将key值,过期时间(秒)和要缓存的对象set到memcached中 */ 
      
               b = mc.set("neea:testDaF:ksIdno", 900, "someObject"); 
      
               if (b.get().booleanValue() == true) { 
      
                  mc.shutdown(); 
      
               } 
      
           } catch (Exception ex) { 
      
               ex.printStackTrace(); 
      
           } 
      
           // 取得对象 
      
            try { 
      
               /* 建立MemcachedClient 实例,并指定memcached服务的IP地址和端口号 */ 
      
               MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000)); 
      
               /* 按照key值从memcached中查找缓存,不存在则返回null */ 
      
               Object b = mc.get("neea:testDaF:ksIdno"); 
      
               System.out.println(b.toString()); 
      
               mc.shutdown(); 
      
           } catch (Exception ex) { 
      
               ex.printStackTrace(); 
      
           } 
      
        } 
      
    } 
      
     
  
分享到:
评论

相关推荐

    Memcached客户端手册

    Memcached使用入门,Memcached基础及示例程序,Memcached Java API基础之MemcachedClient

    memcached各种网络资源

    memcached 服务器端安装程序 memcached java 客户端 api 其他人利用memcached java cliend自己封装的客户端(下载包和封装说明) memcached管理监控工具 memcached安装说明

    memcached:libmemcached C客户端的Ruby接口

    memcached库通过SWIG包装了纯C的libmemcached客户端。 安装 您需要Ruby 1.8.7或Ruby 1.9.2。 其他版本可能会起作用,但不能保证。 您还需要libsasl2-dev和gettext库,它们应通过系统的程序包管理器提供。 安装gem...

    memcache:具有最高效ASCII协议解析器的Node.js内存缓存客户端

    - 主程序包是memcached客户端。 - 一个非常高效的Memcached ASCII协议解析器。 在NodeJS中实现的可工作内存缓存服务器,用于测试。其他实施记忆快取节点内存缓存mc 内存缓存 执照Apache-2.0:copyright: Joel Chen

    Memcached缓存系统-其他

    Memcached是一个内存中键值存储,用于存储来自数据库调用,API调用或页面渲染结果的任意小数据块(字符串,对象)。 Memcached简单而强大。其简单的设计可促进快速部署,易于开发,并解决了大型数据缓存面临的许多...

    memcached全面剖析

    1.4 用客户端连接...........................................................................................................................8 1.5 使用Cache::Memcached......................................

    大数据云计算技术系列 NoSQL数据库学习教程(共71页).pdf

    4 Memcached客户端(mc) 4 缓存式的Web应用程序架构 4 性能测试 4 dbcached 4 Memcached 和 dbcached 在功能上一样吗? 4 列存系列 4 Hadoop之Hbase 4 耶鲁大学之HadoopDB 4 GreenPlum 4 FaceBook之Cassandra 4 ...

    ServiceStack.Redis:.NET的领先C#Redis客户端

    RedisClient可以使用许多不同的API RedisClient实现以下接口: -如果仅将Redis用作缓存,则应该绑定到ServiceStack的公共接口,因为ServiceStack中已经存在内存中的Memcached实现,因此您可以轻松切换提供程序 / -...

    matlab代码中cubic是什么意思-made-in-netherlands:Netherlands在荷兰进行的整洁项目清单

    在Node.js之上构建的功能齐全的Memcached客户端。 考虑到扩展性,因此它将支持Memcached群集和一致的哈希。 841 / :high-speed_train: 基于Powerline Vim插件的oh-my-zsh shell主题 703 / Gaya Kessler编写的...

    JAVA上百实例源码以及开源项目

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,...

    java开源包1

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包11

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包2

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包3

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包6

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包5

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包10

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包4

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

Global site tag (gtag.js) - Google Analytics