Memcached的Java客户端目前有三个:

本文以Maven来构建项目,简单展示XMemcached的使用。

  1. 首先使用Maven的骨架简单构造一个项目;

    mvn archetype:generate

    我这里给出默认都是序号为16的“ org.apache.maven.archetypes:maven-archetype-quickstart”;回车;
    然后依次输入groupId:net.oseye,artifactId:DemoXMemcached,默认的版本号,默认的packeage,最后“Y”,创建项目。

  2. 修改Pom.xml,加入:
    <dependency>
    <groupId>com.googlecode.xmemcached</groupId>
    <artifactId>xmemcached</artifactId>
    <version>1.4.3</version>
    </dependency>

    编译一下:

    chaed & mvn ccd DemoXMemompile
  3. 这时项目就构建好了,可以生成Eclipse项目,来用功能强大的Eclipse来编辑项目:
    mvn eclipse:eclipse
  4. 使用eclipse把DemoXMemcached项目Import进来:
  5. 因为XMemcached使用了SLF4J框架,而从上面的应用类库来看,显然没有绑定日志框架,由SLF4J知识,我们知道需要在Pom.xml在添加一个依赖:
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
    </dependency>

    再编译一下,下载依赖库。

  6. 再重新生成eclipse项目,就能看到引用类库如:

    现在虽然依赖库都齐全了,就需要添加log4j的配置文件了,关于Log4j的配置文件请参考之前的文章,简单配置文件“log4j.properties”内容:

    log4j.rootLogger=INFO,CONSOLE
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.Threshold=WARN
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ssS} %c %m%n
  7. 关于“log4j.properties”放在哪里呢?这又是Maven的约定优先配置的原则了,其实我们打开pom.xml,切换至于"Effective POM"面板,就能发现:

    PS:只有安装了Eclipse的Maven插件才能看到上面的图示,

    • Overview:显示maven项目的一些基本信息.
    • Dependencies:添加jar包的页面,很重要!
    • Plugins:添加maven插件的页面.比如tomcat-maven-plugin等.
    • Dependency Hierarchy:用于显示jar包的依赖关系.没事的时候可以看看jar包的依赖关系.
    • Effective POM:显示maven的编译路径,plugin之类的.可以无视.

    可以看到资源文件应在的目录,其实配置文件就是一种资源文件,所以我们可以把log4j.properties放在"src\main\resources"里:

    Log4j默认加载根目录的“log4j.properties”,如果你的路径不是这样的,则需要另行配置,这里不再赘述。

  8. XMemcached示例Demo:
    package net.oseye;
    
    import java.io.IOException;
    import net.rubyeye.xmemcached.MemcachedClient;
    import net.rubyeye.xmemcached.MemcachedClientBuilder;
    import net.rubyeye.xmemcached.XMemcachedClientBuilder;
    import net.rubyeye.xmemcached.utils.AddrUtil; public class App
    {
    public static void main( String[] args ) throws IOException
    {
    MemcachedClientBuilder builder = new XMemcachedClientBuilder(
    AddrUtil.getAddresses("168.192.0.75:11211"));
    MemcachedClient memcachedClient = builder.build(); try {
    memcachedClient.set("hello", 0, "Hello,xmemcached");
    String value = memcachedClient.get("hello");
    System.out.println("hello 值:"+value);
    }catch (Exception e) {
    }
    try {
    memcachedClient.shutdown();
    } catch (IOException e) {
    System.err.println("Shutdown MemcachedClient fail");
    e.printStackTrace();
    }
    }
    }

    运行输出类似:

    [WARN ]2014-03-18 15:32:50515 net.rubyeye.xmemcached.XMemcachedClient XMemcachedClient use Text protocol
    [INFO ]2014-03-18 15:32:50687 com.google.code.yanf4j.nio.impl.SelectorManager Creating 4 reactors...
    [WARN ]2014-03-18 15:32:50750 com.google.code.yanf4j.core.impl.AbstractController The Controller started at localhost/127.0.0.1:0 ...
    [WARN ]2014-03-18 15:32:50765 com.google.code.yanf4j.core.impl.AbstractController Add a session: 192.168.0.75:11211
    hello 值:Hello,xmemcached
    [INFO ]2014-03-18 15:32:50796 com.google.code.yanf4j.core.impl.AbstractController Controller has been stopped.
    [WARN ]2014-03-18 15:32:50796 com.google.code.yanf4j.core.impl.AbstractController Remove a session: 192.168.0.75:11211

    可见把XMemcached以及yanf4j框架的日志都打印出来了,这样看着很不爽,修改下配置文件“log4j.properties”,让XMemcached和yanf4j只打印ERROR级别的日志,以便发现异常:

    log4j.rootLogger=INFO,CONSOLE
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.Threshold=WARN
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ssS} %c %m%n log4j.logger.com.google=ERROR
    log4j.logger.net.rubyeye=ERROR

    运行输出:

    hello 值:Hello,xmemcached

    这样就清爽多了,关于更多的使用帮助,请看官方文档(好在是中文)。

PS:最好使用eclipse的maven插件,应用使用Maven生成的eclipse工程,有的时候不知道啥原因,找不到Maven命令按钮,只能Maven和Eclipse来回切换,也蛮麻烦的。(发现了,其实只要在pom.xml文件上右键的Run As就能出现Maven命令,或许pom.xml就是maven的标志原因吧)

XMemcached简单使用示例的更多相关文章

  1. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  2. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  3. hadoop环境安装及简单Map-Reduce示例

    说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...

  4. EasyHook远注简单监控示例 z

    http://www.csdn 123.com/html/itweb/20130827/83559_83558_83544.htm 免费开源库EasyHook(inline hook),下面是下载地址 ...

  5. Web Service简单入门示例

    Web Service简单入门示例     我们一般实现Web Service的方法有非常多种.当中我主要使用了CXF Apache插件和Axis 2两种. Web Service是应用服务商为了解决 ...

  6. Ext简单demo示例

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  7. GDAL中MEM格式的简单使用示例

    GDAL库中提供了一种内存文件格式--MEM.如何使用MEM文件格式,主要有两种,一种是通过别的文件使用CreateCopy方法来创建一个MEM:另外一种是图像数据都已经存储在内存中了,然后使用内存数 ...

  8. html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例

    这篇文章主要介绍了html5本地存储的localstorage .本地数据库.sessionStorage简单使用示例,需要的朋友可以参考下 html5的一个非常cool的功能,就是web stora ...

  9. hydra简单使用示例

    本内容为网上收集整理,仅作为备忘!! hydra简单使用示例: 破解https: # hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https ...

随机推荐

  1. jquery的动画函数animate()讲解一

    jquery animate 动画效果使用说明 animate( params, [duration], [easing], [callback] ) 用于创建自定义动画的函数. 这个函数的关键在于指 ...

  2. MalformedObjectNameException: Invalid character '' in value part of property

    http://blog.csdn.net/getdate/article/details/6729706 ojdbc6.jar的问题: 最近在项目中用spring配置oracle数据库连接池, 启动的 ...

  3. 排查问题所用到的一些Linux命令实践(不定期更新。。)

    一.前言 线上问题排查可能是每个程序员都会经历的.在排查的过程中,往往会用到很多Linux命令,也会产生一些很实用的技巧.本博文通过分析一次线上问题排查的过程,把所有用到的命令串起来.每个Linux命 ...

  4. 在Oracle中数据库、表空间、表之间的关系

    在oracle中,表空间是存储概念上的,建立表空间需要有对应的数据文件,数据文件建立好之后直接会把一定的磁盘空间分配给它,这样可以对数据库的存储空间进行有效的管理.然后在建表的时候指定对应的表空间,该 ...

  5. iOS 容器控制器 (Container View Controller)

    iOS 容器控制器 (Container View Controller) 一个控制器包含其他一个或多个控制器,前者为容器控制器 (Container View Controller),后者为子控制器 ...

  6. Android实现先横向横线展现在纵向拉开图片

    前段时间产品那边让我做一个动画,要求是先以横线的方式横向展开,在纵向展示图片,最后展示几秒动画在原路返回,随后我在网上查找资料,发现这方面的记录很少,最后自己写了一个 后期还会慢慢改进: 转载请说明出 ...

  7. cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command

    cmake的四个命令:add_compile_options.add_definitions.target_compile_definitions.build_command add_compile_ ...

  8. Android实现屏蔽微信拉黑和删除联系人功能

    实现效果: 让微信永远弹不出那个删除的对话框不就相当于屏蔽掉该功能了吗?哈哈效果如图: 实现原理: 同样是利用AccessibilityService辅助服务,关于这个服务类还不了解的同学可以先看下我 ...

  9. Javascript前端面试题

    在网上看到了一些Javascript的面试题就整理了下来,后续看到再继续补充. 面试题按类型来分,主要涉及到"技术"与"非技术"两大类,技术类别下涉及到的子类别 ...

  10. svg学习之旅(1)

    Canvas 与 SVG 的比较 下表列出了 canvas 与 SVG 之间的一些不同之处. Canvas 依赖分辨率 不支持事件处理器 弱的文本渲染能力 能够以 .png 或 .jpg 格式保存结果 ...