memcache for java_memcache-client-forjava的使用

memcache-client-forjava的使用

阿里的大神开发的一套用于memcached框架。

项目地址  https://code.google.com/p/memcache-client-forjava/

下载对应的jar文件 alisoft-xplatform-asf-cache-2.5.1.jar

这个jar文件依赖于一些开源的库文件(参考大神写的 Memcached_Client_HandBook.docx ,里面详细列举了需要的依赖包)

Cache Client第三方依赖

commons-logging-1.0.4.jar or high version

log4j-1.2.12.jar or high version

codehaus/woodstox/wstx-asl-3.2.1.jar or high version

codehaus/staxapi/stax-api-1.0.1.jar or high version

2.5.2版本以后还需要caucho/hessian/hessian-3.2.0.jar or high version

Cache Client单客户端配置

memcached.xml,存放目录 /src目录下

com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler

nagle="false" socketTO="3000" aliveCheck="true">

10.2.224.36:33001,10.2.224.46:33001

3,7

1.创建memcached的标签。

2.创建 client的标签。

注意:

name 属性是程序中使用Cache的唯一标识。

socketpool 属性将会关联到后面的socketpool配置。

errorHandler 可选,用来处理出错情况。注意在Tag中不要使用空格或者Tab键。

3.创建socketpool的标签。

注意:

name 属性和client 配置中的socketpool 属性相关联。

maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。

socketTO 属性是Socket操作超时配置,单位ms。

aliveCheck 属性表示在使用Socket以前是否先检查Socket状态。

4.创建 servers 标签作为socketPool的子标签.设置memcache服务端实例地址,支持多个地址设置,例如“10.2.224.36:33001” 或 “10.2.224.36:33001, 10.2.224.46:33002”.

5.创建 weights 标签作为socketPool的子标签(可选),它表明了上面设置的服务器实例的Load权重. 例如 3,7 表示30% load 在 10.2.224.36:33001, 70% load 在 10.2.224.46:33001

好了,基础的配置就如上。

或者,也可以配置多个client,如下

com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler

com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler

com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler

127.0.0.1:11211

1

127.0.0.1:11311

1

127.0.0.1:11411

1

使用前,必须按照配置文件来启动memcached!例如:

./memcached -d -m 128 -l 127.0.0.1 -p 11211

./memcached -d -m 128 -l 127.0.0.1 -p 11411 -u root

。。。

在web项目启动中首先初始化memcache;准备一个Java文件,例如

Memcache.java,在启动类中调用Memcache.init()方法,对memcache进行初始化。

package demo;

import com.alisoft.xplatform.asf.cache.ICacheManager;

import com.alisoft.xplatform.asf.cache.IMemcachedCache;

import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;

import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;

public class Memcache {

public static ICacheManager manager;

//初始化方法

public static void init(){

System.out.println("Memcache.int() start");

try{

manager = CacheUtil.getCacheManager(IMemcachedCache.class,MemcachedCacheManager.class.getName());

manager.setConfigFile("memcached.xml");

manager.setResponseStatInterval(5*1000);

manager.start();

}catch(Exception e){

e.printStackTrace();

}

System.out.println("Memcache.int() end");

}

//get cache

public static IMemcachedCache cache(){

return manager.getCache("mclient0");

}

public static void main(String[] argc) {

init();

System.out.println("add key:key001=value001");

Memcache.cache().put("key001", "value001");

}

}

默认配置文件名为memcached.xml ,如果你的文件名和这个相同,那么manager.setConfigFile(null)这样写就可以了,不用写上xml文件名。

该默认文件名是在 com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager类中定义的:

privatestaticfinalStringMEMCACHED_CONFIG_FILE="memcached.xml";

当memcache初始化后,就可以开始使用了,如下的简单例子:

/**

* 获取全部已发布的链接.

* @param db

* @return

* @throws Exception

*/

public static List listAllPublish(DbFactory db) throws Exception{

StringBuffer sql = new StringBuffer();

sql.append("SELECT * FROM t_link where li_state=");

sql.append(Constant.LINK_STATE_PUBLISH);

sql.append(" order by li_order_no");

String key = StringTool.md5(sql.toString());

if(Memcache.cache().containsKey(key)){

System.out.println("read from Memcache");

return (List)(Memcache.cache().get(key));

}else{

System.out.println("read from DB");

List records = db.clear().setClazz(Link.class).setSql(sql.toString()).queryList();

Memcache.cache().put(key,records);

return records;

}

}

一般可以用数据库查询的sql语句的md5编码数值作为 memcache的key。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值