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目录下
<?xml version="1.0" encoding="UTF-8"?> <memcached> <client name="mclient0" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0"> <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler> </client> <socketpool name="pool0" failover="true" initConn="5" minConn="5" maxConn="250" maintSleep="5000" nagle="false" socketTO="3000" aliveCheck="true"> <servers>10.2.224.36:33001,10.2.224.46:33001</servers> <weights>3,7</weights> </socketpool> </memcached>
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权重. 例如 <weights>3,7</weights> 表示30% load 在 10.2.224.36:33001, 70% load 在 10.2.224.46:33001
好了,基础的配置就如上。
或者,也可以配置多个client,如下
<?xml version="1.0" encoding="UTF-8"?> <memcached> <client name="mclient0" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0"> <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler> </client> <client name="mclient1" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool1"> <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler> </client> <client name="mclient2" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool2"> <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler> </client> <socketpool name="pool0" failover="true" initConn="5" minConn="5" maxConn="250" maintSleep="5000" nagle="false" socketTO="3000" aliveCheck="true"> <servers>127.0.0.1:11211</servers> <weights>1</weights> </socketpool> <socketpool name="pool1" failover="true" initConn="5" minConn="5" maxConn="250" maintSleep="5000" nagle="false" socketTO="3000" aliveCheck="true"> <servers>127.0.0.1:11311</servers> <weights>1</weights> </socketpool> <socketpool name="pool2" failover="true" initConn="5" minConn="5" maxConn="250" maintSleep="5000" nagle="false" socketTO="3000" aliveCheck="true"> <servers>127.0.0.1:11411</servers> <weights>1</weights> </socketpool> </memcached>
使用前,必须按照配置文件来启动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<IMemcachedCache> 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类中定义的:
privatestaticfinal String MEMCACHED_CONFIG_FILE ="memcached.xml";
当memcache初始化后,就可以开始使用了,如下的简单例子:
/** * 获取全部已发布的链接. * @param db * @return * @throws Exception */ public static List<Link> 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<Link>)(Memcache.cache().get(key)); }else{ System.out.println("read from DB"); List<Link> records = db.clear().setClazz(Link.class).setSql(sql.toString()).queryList(); Memcache.cache().put(key,records); return records; } }
一般可以用数据库查询的sql语句的md5编码数值作为 memcache的key。
相关推荐
谷歌对于memcached提供给Java的客户端有spymemcached、xmemcached、memcache-client-forjava等多种形式,但memcache-client-forjava是使用最多、最稳定的。里边的文件和文档(有中文文档)都是从官网下载的,里边的...
java memcached client xmemcached memcache-client-forjava
关于memcache 使用的 客户端是memcached client for java 的 JAVA工程
这次主要的优化工作还是在三个方面:应用服务器(Apache,JBoss)配置,业务流程,Cache Client包(http://code.google.com/p/memcache-client-forjava/ )。这里把过去和这次优化对于Cache的使用作一个经验分享,...
memcache java client 2.6.3版本,包括完整的jar包. memcached win 服务端.
由memcached开发人员维护的一个 java客户端,效率比较高,比较稳定
停止更新 由于认知升级,此博客不再更新,重定向为作品集: 关于 这是我的博客: 整站源码。...axios:Promise based HTTP client for the browser and node.js. lscache:A localStorage-based memcache-i
Ming functions for Flash LXXIX. Miscellaneous Functions LXXX. mnoGoSearch Functions LXXXI. Microsoft SQL Server Functions LXXXII. Microsoft SQL Server and Sybase Functions (PDO_DBLIB) LXXXIII. Mohawk...
CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Cyrus IMAP administration Functions XXI. Database (dbm-style) Abstraction Layer Functions XXII. Date/Time 日期/时间函数 XXIII....
I/O目前一般的I/O的访问速度: L1 > L2 > memory -> disk or network常见的IO:nas上文件 (共享文件存储)output/xxx (磁盘文件)memcache client / cat client (cache服务)database (oracle , mysql) (数据库)dubbo ...
CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Cyrus IMAP administration Functions XXI. Database (dbm-style) Abstraction Layer Functions XXII. Date/Time 日期/时间函数 XXIII....
CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Cyrus IMAP administration Functions XXI. Database (dbm-style) Abstraction Layer Functions XXII. Date/Time 日期/时间函数 XXIII....
Memcache — Memcache Functions mhash — Mhash Functions Mimetype — Mimetype Functions Ming (flash) — Ming functions for Flash Misc. — Miscellaneous Functions mnoGoSearch — mnoGoSearch Functions MS...
CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Cyrus IMAP administration Functions XXI. Database (dbm-style) Abstraction Layer Functions XXII. Date/Time 日期/时间函数 XXIII....
Memcache — Memcache Functions mhash — Mhash Functions Mimetype — Mimetype Functions Ming (flash) — Ming functions for Flash Misc. — Miscellaneous Functions mnoGoSearch — mnoGoSearch Functions MS...
Ming functions for Flash LXXVIII. Miscellaneous Functions LXXIX. mnoGoSearch Functions LXXX. Microsoft SQL Server Functions LXXXI. Microsoft SQL Server and Sybase Functions (PDO_DBLIB) LXXXII. Mohawk...
Ming functions for Flash XC. Miscellaneous Functions XCI. mnoGoSearch Functions XCII. Microsoft SQL Server Functions XCIII. Microsoft SQL Server and Sybase Functions (PDO_DBLIB) XCIV. Mohawk Software...
Ming functions for Flash XC. Miscellaneous Functions XCI. mnoGoSearch Functions XCII. Microsoft SQL Server Functions XCIII. Microsoft SQL Server and Sybase Functions (PDO_DBLIB) XCIV. Mohawk ...
CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Cyrus IMAP administration Functions XXI. Database (dbm-style) Abstraction Layer Functions XXII. Date/Time 日期/时间函数 XXIII....
CURL, Client URL Library Functions XIX. Cybercash Payment Functions XX. Cyrus IMAP administration Functions XXI. Database (dbm-style) Abstraction Layer Functions XXII. Date/Time 日期/时间函数 XXIII....