`
jason61719
  • 浏览: 38887 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Maven项目中用Memcached实现缓存配置

阅读更多

 

这是新的项目架构,得说,这次很大胆的用了Maven 的多模块项目设计来重新做这个庞大的项目。

Maven项目中用Memcached实现缓存配置 - 小沉 - 沉积异次元
 

 

下面记录MemcachedMaven 中的配置。

首先介绍如何手动添加第三方类库到自己电脑的本地仓库,这折腾了我一个晚上,点击链接 Maven 中手动添加第三方类库到自己电脑的本地仓库.m2

首先添加MemcachedJava 客户端到项目依赖中,如下执行:

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同目录配置文件看 */
	}
	
}

 

 

 

后期可能会加入数据库和缓存同步功能,初步构想是用数据库的触发器来完成,也就是在需要放在缓存的数据表操作的时候触发刷新缓存的操作,这不仅让项目代码的业务考虑缩小范围,另一方面代码侵入也小,容易修改。具体实现等更新。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics