这是新的项目架构,得说,这次很大胆的用了Maven 的多模块项目设计来重新做这个庞大的项目。
![Maven项目中用Memcached实现缓存配置 - 小沉 - 沉积异次元 Maven项目中用Memcached实现缓存配置 - 小沉 - 沉积异次元](/upload/picture/pic/87855/80870638-2a28-3a8e-a286-2fa9fd5a5c1f.png)
下面记录Memcached 在Maven 中的配置。
首先介绍如何手动添加第三方类库到自己电脑的本地仓库,这折腾了我一个晚上,点击链接 Maven 中手动添加第三方类库到自己电脑的本地仓库.m2 。
首先添加Memcached 的Java 客户端到项目依赖中,如下执行:
1. 将Memcached.jar 放到E 盘下面;
2. cmd 到打开命令窗口以后开始安装,运行如下指令:
E:\User>mvn install:install-file -Dfile=e:/memcached.jar -DgroupId=com.danga -DartifactId=memcached -Dversion=2.5.3 -Dpackaging=jar -DgeneratePom=true
3. 这样它就会自动在本地仓库里面加入自定义的jar 依赖。
接着在项目添加以下依赖:
<dependency> <groupId>com.danga</groupId> <artifactId>memcached</artifactId> <version>2.5.3</version> </dependency>
接着在项目中写Memcached 的应用类,下面是根据官方demo 修改的,仅供参考:
/**
* @author jason61719
* @buildTime 2011.03.12
* @description 本类用于连接缓冲池Memcached
*/
package base.util;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class CacheHelper {
/* 单例模式 */
protected static MemCachedClient mcc = new MemCachedClient();
private CacheHelper() {
}
/* 配置服务器组 */
static {
/* 定义IP地址和端口 */
String[] servers = { "127.0.0.1:11212" };
/* 设置缓存大小 */
Integer[] weights = { 2 };
/* 拿到一个连接池的实例 */
SockIOPool pool = SockIOPool.getInstance();
/* 注入服务器组信息 */
pool.setServers(servers);
pool.setWeights(weights);
/* 配置缓冲池的一些基础信息 */
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(1000 * 60 * 60 * 6);
/* 设置线程休眠时间 */
pool.setMaintSleep(30);
/* 设置关于TCP连接 */
pool.setNagle(false);// 禁用nagle算法
pool.setSocketConnectTO(0);
pool.setSocketTO(3000);// 3秒超时
/* 初始化 */
pool.initialize();
/* 设置缓存压缩 */
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
public static boolean set(String arg0, Object arg1) {
return mcc.set(arg0, arg1);
}
public static Object get(String arg0) {
return mcc.get(arg0);
}
/* 测试 */
public static void main(String[] args) {
CacheHelper.set("gogo", "gogogogo");
System.out.println(CacheHelper.get("gogo"));// gogogogo
System.out.println(CacheHelper.get("gogog"));// null
/* 如果出现都为null,检查地址和端口。端口可以到Memcached同目录配置文件看 */
}
}
后期可能会加入数据库和缓存同步功能,初步构想是用数据库的触发器来完成,也就是在需要放在缓存的数据表操作的时候触发刷新缓存的操作,这不仅让项目代码的业务考虑缩小范围,另一方面代码侵入也小,容易修改。具体实现等更新。