`
MauerSu
  • 浏览: 519964 次
  • 性别: 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客户端(三种客户端)

    在Java开发中,有三种主流的Memcached客户端库供开发者选择:官方的基于传统阻塞IO的客户端、Dustin Sallings实现的基于Java NIO的Spymemcached以及XMemcached。 1. **官方客户端** 官方提供的客户端是由Greg ...

    memcached客户端文件及服务端

    Memcached是一种高性能、分布式的内存对象缓存系统,用于在数据库和应用程序之间缓存数据,以减少对数据库的访问压力,提高应用的响应速度。它最初由Danga Interactive公司开发,现在已经成为互联网上广泛使用的开源...

    memcached C++ 客户端 源码

    描述同样简洁明了,确认了内容的核心是C++实现的memcached客户端源代码,意味着我们可以期待看到如何在C++程序中连接、存储和检索数据到memcached服务器的实现。 **标签解析** 标签"memcached C++ 客户端 源码...

    Memcached 客户端 服务端 管理工具

    Memcached客户端 客户端是应用与Memcached交互的接口,常见的客户端库有libmemcached(C语言)、pylibmc(Python)和memcached-client(Java)等。客户端的主要任务包括: - **连接管理**:建立与服务端的TCP连接...

    memcached客户端所需jar包

    Xmemcached是一个高性能、线程安全的Java Memcached客户端,它支持异步操作,提供全面的API和配置选项。版本号2.6.6表明这是该客户端的一个具体发行版。 使用这些客户端库时,开发者需要理解以下关键概念和API: -...

    memcached客户端和服务端程序和jar包

    Spymemcached 是一个轻量级且高度优化的 Memcached 客户端,它提供了简单易用的 API,使得在Java应用中集成 Memcached 变得轻松。使用 Spymemcached,你需要添加其 JAR 包到项目的类路径中。例如,在Maven项目中,...

    Memcached 服务端,客户端,C#

    1. 创建Memcached客户端实例,指定服务器地址和端口。 2. 使用Set方法存储数据,如`client.Set("key", "value")`。 3. 使用Get方法获取数据,如`string value = client.Get("key")`。 4. 使用Delete方法移除数据,如...

    memcached客户端包memcached-1.4.12.tar.gz

    1. **下载与安装**:这个包是Memcached客户端的一个特定版本,可以通过解压`memcached-1.4.12.tar.gz`来获取源代码,然后在Linux环境下编译安装。 2. **API支持**:包含C,C++,Python,PHP,Java,Perl等语言的...

    memcached客户端

    Memcached客户端是分布式内存缓存系统Memcached与应用程序交互的重要组成部分。这个系统广泛应用于Web开发,用于减轻数据库负载,提高网站性能。Memcached通过在内存中存储数据,提供快速的数据访问,尤其适用于处理...

    memcached 完整的项目,服务端(win) 客户端 包括jar包

    ### 三、Java 客户端 API 示例 以下是一个简单的示例,展示如何使用 Java 客户端连接到 Memcached 服务并进行数据操作: ```java import net.spy.memcached.MemcachedClient; import net.spy.memcached.AddrUtil; ...

    基于mina的一个Memcached客户端首发

    标题中的“基于mina的一个Memcached客户端首发”指出我们要讨论的是一个使用Apache MINA框架实现的Memcached客户端。Apache MINA是一个网络应用框架,主要用于简化开发高性能且高度可伸缩的网络应用程序,如服务器和...

    Python-强大的memcached客户端拥有shdict缓存层和许多其他功能

    标题中的“Python-强大的memcached客户端拥有shdict缓存层和许多其他功能”指的是一个针对Python的高级memcached客户端库,它集成了名为shdict的高效缓存层,并且提供了丰富的附加特性。memcached是一种广泛使用的...

    memcached1.4.13(32、64位windows)在.Net中使用.zip

    描述中提到的“引用 Memcached.ClientLibrary.dll”,这是一个常用的.NET Memcached客户端库,它为.NET开发者提供了方便的API,用于连接和操作Memcached服务器。通过引用这个库,开发人员可以轻松地在他们的.NET应用...

    java_memcached-release_2.6.3.rar 客户端所有包

    Java Memcached客户端是Java开发者用来与Memcached分布式内存缓存系统进行交互的工具。这个`java_memcached-release_2.6.3.rar`压缩包包含了用于Java客户端开发所需的全部依赖库,使得开发者能够轻松地在Java应用中...

    Memcached客户端手册

    # Memcached客户端手册知识点详解 ## 一、Memcached简介与使用入门 ### 1.1 Memcached概述 Memcached是一种高性能的分布式内存对象缓存系统,用于减轻数据库负载,加速动态Web应用,提高网站访问速度。其通过缓存...

    memcached java客户端驱动包

    使用Java Memcached驱动包的基本步骤通常包括:导入`mem-java.jar`库,创建Memcached客户端实例,配置服务器列表,然后调用相应接口进行数据操作。同时,可以结合`mem-doc`中的文档来获取详细的使用指南和API说明。 ...

    MemCached Provider客户端

    Enyim.Caching 是一个开源的、全面的 Memcached 客户端实现,它提供了一套丰富的 API 来操作 Memcached 服务。然而,`MemcachedProviders` 是对 Enyim.Caching 的进一步封装,旨在增强其功能并简化开发者的使用体验...

    php的memcached客户端memcached

    PHP memcached客户端是用于在PHP应用程序中与memcached缓存服务进行交互的扩展库。memcached是一种高性能、分布式的内存对象缓存系统,通常用于加速动态数据库驱动网站的访问速度。它可以减轻数据库负载,提高数据...

    分布式缓存客户端MemcachedProviders最新下载

    分布式缓存客户端MemcachedProviders是IT领域中一种用于提高应用程序性能和可伸缩性的关键工具。Memcached是一种广泛使用的开源高性能、分布式内存对象缓存系统,它可以存储数据并提供高速访问,减轻数据库负载,...

Global site tag (gtag.js) - Google Analytics