XMemcached简单使用示例
Memcached的Java客户端目前有三个:
- Memcached Client for Java 比 SpyMemcached更稳定、更早、更广泛;
- SpyMemcached 比 Memcached Client for Java更高效;
- XMemcached 比 SpyMemcache并发效果更好;
本文以Maven来构建项目,简单展示XMemcached的使用。
- 首先使用Maven的骨架简单构造一个项目;
mvn archetype:generate
我这里给出默认都是序号为16的“ org.apache.maven.archetypes:maven-archetype-quickstart”;回车;
然后依次输入groupId:net.oseye,artifactId:DemoXMemcached,默认的版本号,默认的packeage,最后“Y”,创建项目。 - 修改Pom.xml,加入:
<dependency>
<groupId>com.googlecode.xmemcached</groupId>
<artifactId>xmemcached</artifactId>
<version>1.4.3</version>
</dependency>编译一下:
chaed & mvn ccd DemoXMemompile
- 这时项目就构建好了,可以生成Eclipse项目,来用功能强大的Eclipse来编辑项目:
mvn eclipse:eclipse
- 使用eclipse把DemoXMemcached项目Import进来:

- 因为XMemcached使用了SLF4J框架,而从上面的应用类库来看,显然没有绑定日志框架,由SLF4J知识,我们知道需要在Pom.xml在添加一个依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>再编译一下,下载依赖库。
- 再重新生成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 - 关于“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”,如果你的路径不是这样的,则需要另行配置,这里不再赘述。 - 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简单使用示例的更多相关文章
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- hadoop环境安装及简单Map-Reduce示例
说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...
- EasyHook远注简单监控示例 z
http://www.csdn 123.com/html/itweb/20130827/83559_83558_83544.htm 免费开源库EasyHook(inline hook),下面是下载地址 ...
- Web Service简单入门示例
Web Service简单入门示例 我们一般实现Web Service的方法有非常多种.当中我主要使用了CXF Apache插件和Axis 2两种. Web Service是应用服务商为了解决 ...
- Ext简单demo示例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- GDAL中MEM格式的简单使用示例
GDAL库中提供了一种内存文件格式--MEM.如何使用MEM文件格式,主要有两种,一种是通过别的文件使用CreateCopy方法来创建一个MEM:另外一种是图像数据都已经存储在内存中了,然后使用内存数 ...
- html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
这篇文章主要介绍了html5本地存储的localstorage .本地数据库.sessionStorage简单使用示例,需要的朋友可以参考下 html5的一个非常cool的功能,就是web stora ...
- hydra简单使用示例
本内容为网上收集整理,仅作为备忘!! hydra简单使用示例: 破解https: # hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https ...
随机推荐
- Jqgrid学习(转载)
jqGrid API 全 JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做 ...
- QT第一天学习
sudo apt-get install libqt4-dev回顾: 面向对象方法: 封装.继承.多态 封装:类 数据和操作 实现了信息隐藏 public: 类的内部 类的外部 private: pr ...
- windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展
注:如使用集成环境成功率低,请自行配置php apache,表示win7下wamp php5.4.3基础上配置拓展,成功率极低.费时. 拓展安装调试方法: 编写调试php文件 <?php me ...
- MVC伪一个12306图片验证码
本文的来由主要是满足自己的好奇心,而不是证明什么东西,如果涉及到什么官方性的事情,麻烦通知我谢谢:本篇将要和大家分享的是一个看起来通12306图片验证码相似的效果,这篇应该是今年农历最后一篇分享文章了 ...
- SQL2008实现数据库自动定时备份——维护计划
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...
- Bootstrap入门(十一)组件5:输入框组
Bootstrap入门(十一)组件5:输入框组 1.为其中添加第一个输入框 2.添加额外的元素 3.为用户提供标识 4.改变输入框的尺寸 5.为额外添加多选/单选框 6.与按钮结合 7.与下拉菜单 ...
- 小谈JavaScript中this的用法
"this"关键字是JavaScript中广泛应用的一种特性,但它经常也是这门语言中最容易混淆和误解的特性.那么"this"的实际意义是什么?它是如何求值的? ...
- SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)
由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...
- Jquery实现的几款漂亮的时间轴
引言 最近项目中使用了很多前端的东西,对于我一个做后台开发的人员,这是一个很好的锻炼的机会.经过这段时间的学习,感觉前端的东西太多了,太强大了,做出来的东西太炫酷了.现在有很多开源的前端框架,做的都非 ...
- 作为测试人员,我是这么报BUG的
在测试人员提需求的时候,大家经常会看到,测试员和开发一言不合就上BUG.然后开发一下就炸了,屡试不爽,招招致命. 曾经看到有个段子这么写道: 不要对程序员说,你的代码有BUG. 他的第一反应是:1.你 ...