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

Java 使用 memcached 的简单例子 缓存

阅读更多
MemCached 安装日志

关键字: memcached
1、下载memcached-1.2.1.tar.gz和libevent-1.3b.tar.gz;
2、安装libevent
tar xvfz  libevent-1.3b.tar.gz
cd libevent-1.3b
./configure && make
make install
3、安装memcache
tar xvfz  memcached-1.2.1.tar.gz
cd  memcached-1.2.1
./configure
make && make install
4、将libevent安装的/usr/local/lib输出到引用库路径
# vi ~/.bash_profile
加入如下一行:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
5、启动(安装后位置:/usr/local/bin/memcached)
memcached  -d  -m 128 -l 192.168.0.50 -p 11211 -u root
即以root用户,分配最大2GM内存启动memcache
memcached  -d  -m 128 -l 192.168.0.50 -p 11212 -u root
在另外一个端口11212启动另外一个memcache实例
 

* Created on 2006-7-24
 * 连接缓存服务器
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class MemCacheWorkBench {
	
	private static final String POOL_NAME = "danqoo"; 
	
	private static final String CACHE_SERVER = "211.155.224.112:11211";

	private static MemCachedClient client = null;
	
	private static boolean USE_MEMCACHE_FLAG = true;

	public static MemCachedClient getMemCachedClient() {
		if (USE_MEMCACHE_FLAG){
			if (client == null) {
				String[] serverlist = { CACHE_SERVER };
				SockIOPool pool = SockIOPool.getInstance(POOL_NAME);
				pool.setServers(serverlist);
				// 设置初始连接数、最小和最大连接数以及最大处理时间
	
				pool.setInitConn( 5 );       
		        pool.setMinConn( 5 );       
		        pool.setMaxConn( 250 );       
		        pool.setMaxIdle( 1000 * 60 * 30);		        
		        // 设置主线程的睡眠时间
		        pool.setMaintSleep( 30 ); 	
				// 设置TCP的参数,连接超时等
		        pool.setNagle( false );       
		        //连接建立后对超时的控制    
		        pool.setSocketTO( 3000 );    
		        //连接建立时对超时的控制    
		        pool.setSocketConnectTO( 0 );   
				pool.initialize();   
				client = new MemCachedClient();
				// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
				client.setCompressEnable(true);
				client.setCompressThreshold(4096);
				client.setPrimitiveAsString(true);
				client.setPoolName(POOL_NAME);
			}
			return client;
		}else{
			return null;
		}
	}
	
}


/*
 * Created on 2006-7-24
 * 单子模式实加载一个对象
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class MemCacheUtil {
	
	public static String indeKey = "danqoo.index";
	private static Integer OVER_TIME = 5*60*1000;
	private static Log logger = LogFactory.getLog(MemCacheUtil.class);
	private static MemCachedClient mc = MemCacheWorkBench.getMemCachedClient();

	
	public static Object get(String key) {
		if (mc != null && key != null && key.trim().length() > 0)
			return mc.get(key);
		else
			return null;
	}

	public static void set(String key, Object value) {
		if (mc != null && key != null && key.trim().length() > 0)
			mc.set(key, value,new Date(OVER_TIME));//过期时间设置默认
	}
	
	public static void set(String key, Object value,Date date) {
		if (mc != null && key != null && key.trim().length() > 0)
			mc.set(key, value,date);
	}

	public static void delete(String key) {
		if (mc != null && key != null && key.trim().length() > 0)
			mc.delete(key);
	}

	public static void clear() {
		if (mc != null){
			mc.flushAll();
		}	
	}
	
	public static String createKey(String id,Map map){
		StringBuffer sbuf = new StringBuffer();
		sbuf.append(id);
		for (Object key : map.keySet()) {			
			sbuf.append(".").append(key).append("=").append(map.get(key));
		}
		return  Utilities.encodePassword(sbuf.toString(), "md5");
	}
	
	public static String createKey(String id,String paraName,String value){
		StringBuffer sbuf = new StringBuffer();
		sbuf.append(id).append(".").append(paraName).append("=").append(value);
		return Utilities.encodePassword(sbuf.toString(), "md5");
	}
	
	public static String createKey(String id){		
		return Utilities.encodePassword(id.toString(), "md5");
	}
		
}


/** 
 * @Dao层运用缓存机制
 * @date:2008-9-17 
 * @time:上午09:42:03 
 */
public class AdvPicDaoImpl extends SqlMapClientDaoSupport implements IAdvPicDao{
	
	public AdvPicBean getAdvPic(int id) {
		
		return (AdvPicBean)this.getSqlMapClientTemplate().queryForObject("advpic.getAdvPic",id);
	}

	public void setAdvPic(AdvPicBean bean) {
		this.getSqlMapClientTemplate().insert("advpic.setAdvPic",bean);
		
	}		
	 public List<AdvPicBean> getAdvice(int begin,int advType,int advFileType)
	 {
		 Map map=new HashMap();
		 map.put("begin", begin);
		 map.put("adType", advType);
		 map.put("adFileType", advFileType);
		 String key = MemCacheUtil.createKey("advpic.getAdvice",map);
		 List<AdvPicBean> list = (List<AdvPicBean>) MemCacheUtil.get(key);
		 if (list == null ){
			 list =  this.getSqlMapClientTemplate().queryForList("advpic.getAdvice",map);
			 MemCacheUtil.set(key, list);
		 }
		 return list;
	 }


	public List<FLinkForm> findFLinkList(Integer num) {
//		return this.getSqlMapClientTemplate().queryForList("advpic.findFLinkList",num);
		String key = MemCacheUtil.createKey("advpic.findFLinkList","num",Integer.toBinaryString(num));
		Object obj = MemCacheUtil.get(key);
		if (obj !=null){
			return (List)obj;
		}else{
			List value = this.getSqlMapClientTemplate().queryForList("advpic.findFLinkList",num);
			MemCacheUtil.set(key, value);
			return value;
		}
	}

	public FLinkForm getAdvertiseCodeById(String id) {
		return (FLinkForm)this.getSqlMapClientTemplate().queryForObject("advpic.getAdvertiseCodeById", id);
	}

	public WordAdBean getWordAdByKey(String key) {
		return (WordAdBean)this.getSqlMapClientTemplate().queryForObject("advpic.getWordAdByKey", key);
	}			
}
分享到:
评论

相关推荐

    memcached缓存使用演示

    memcached缓存使用演示小项目,缓存服务器的搭建,增删改查缓存

    Memcached java的使用实例

    Memcached java的使用实例。数据库的缓存工具memcached

    MemCached 缓存系统配置说明

    这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个...

    memcached与JAVA实例文档

    本实例包括memcached所有使用文档和实例,还有安装程序的说明与客户端

    memcached1

    先从memcached上进行说明,memcached的最新版是采用c语言进行开发和设计的,据说旧版的是采用perl语言开发的,而且它是一个应用软件来的,是作为缓存服务器的服务器端运行在服务器上的,需要使用特定的语言编写...

    java 缓存系统实战(安装和实例代码)

    介绍了memcached缓存开源框架在windows下的安装,以及如何用java访问缓存server,并结合原理和代码讲解。代码测过可用。

    JAVA缓存概念体系及应用

    该压缩包中有一个WORD和一个PPT,WORD中介绍了通过单实例和简单LRU算法实现缓存。PPT中介绍了缓存体系,JVM内存模型,JCONSOLE监控工具的使用,Oscache缓存架构 Ehcache缓存架构 Memcached缓存架构 JiveCache缓存架构...

    memcached的资料

    memcached是一个高性能的缓存系统。 在windonw下面学习memcached开发,需要使用的包 第一个:memcached服务,需要安装一个windows下的服务, memcached_en32or64.zip 安装方法,自己上网查找 第二个:需要开发...

    memcached和spring集成

    memcached和spring集成、内附测试例子

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    实例讲解分布式缓存软件Memcached的Java客户端使用

    主要介绍了分布式缓存软件Memcached的Java客户端使用,Memcached在GitHub上开源,作者用其Windows平台下的版本进行演示,需要的朋友可以参考下

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包8

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包4

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包6

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包11

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包101

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包9

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包5

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

Global site tag (gtag.js) - Google Analytics