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 ...
随机推荐
- Chrome调试大全
作为一名前端开发者,打交道最多的可能是和浏览器.市面上各种浏览器多不胜数,主流的有Chrome,Firefox,Safari,IE,Opera,非主流的如360,遨游,QQ浏览器,搜狗浏览器,据说淘宝 ...
- XML文档的PHP程序查询代码
PHP文档: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www ...
- NetStream.appendBytes, 走向Flash P2P VOD的第一步
之前被告知可以自行实现Flash p2p的点播功能, 但一直疑惑, 印象中NetStream并未提供相关方法, 前天看订阅时发现的文章: ByteArray Access to NetStream i ...
- VisualGDB Makefiles
以下内容是VisualGDB官网对VisualGDB编译时获取相关编译信息的说明: When you create a new project using VisualGDB, it will gen ...
- js 计算月/周的第一天和最后一天
因为项目开发中遇到需要向后台传本周的开始和结束时间,以及上一周的起止时间,就琢磨了半天,总算写出来一套,写篇文章是为了方便自己记忆,也是分享给需要的人,水平有限,写的不好请见谅: getDateStr ...
- iOS WebViewJavascriptBridge初步尝试与图文详细讲解
JS和OC的交互这是个永恒话题,使用场景也是越来越多,如今一些reactnative.vue框架等,都是在重点结合原生与H5的混合使用. 那么,如何快捷方便的使用两者交互是一个很重要的关键点. 1.传 ...
- ArcGIS Pro 简明教程(2)基础操作和简单制图
ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...
- Android微信朋友圈全文、收起功能
在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...
- 转自scutan 常用的Linux编程库
库 头文件 描述libGL.so ...
- 数字信号处理MATLAB简单序列
数字信号处理应用的几个基本序列: 1 单位样本序列 function mainImseq() clc clear disp('生成抽样序列'); y=imseq(,,); %调用样本函数,此时序列下标 ...