`
TableMiao
  • 浏览: 73771 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Redis(五) 缓存使用、与Memcached的差异

阅读更多
Redis() 缓存使用、与Memcached的差异

一、缓存的使用

   同集成spring进行存取操作一致,只是加入key的失效时间而已。

 

   1.创建一个cachedManager  封装存取方法

@Repository
public class CachedManager extends BaseDao{
	
	public boolean setCached(String key,Object value,Long expire){
		try{
			super.redisTemplate.opsForValue().set(key, value, expire, TimeUnit.MINUTES);
			return true;
		}catch(Exception e){
			logger.info("添加缓存失败:{}",e.getMessage());
			return false;
		}
	}
	
	public Object getCached(String key){
		try{
			return super.redisTemplate.opsForValue().get(key);
		}catch(Exception e){
			logger.info("获取缓存失败:{}",e.getMessage());
			return false;
		}
	}
添加缓存的时候多了两个参数一个是缓存时间,一个是单位(纳秒到天可选,源码可看)

2.测试  缓存一分钟的一个key

cached.setCached("cached_test", "你好----", Long.valueOf(1));
		for (int i = 0; i < 15; i++){
			logger.info("获取缓存数据:{},当前时间:{}", cached.getCached("cached_test"),
					new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
							.format(new Date()));
			Thread.currentThread().sleep(5000);
		}

 

结果可见,一分钟之后失效。详见cc-redis-tow  package:cachedtest

 

二、与Memcached比较

1.基本参数

   memcached  默认端口11211  缓存默认失效时间 30天(有种说法是永久、但在30天后可存不可取)  一个key中存储的value值最大为1M,超过1M可拆分成多个key进行操作

   Redis 默认端口6379   缓存默认失效时间不过期(如果取消了默认的持久化方式、数据不被持久化到磁盘上,当内存超出后,redis会使用lru机制把最近最少用的key清除,且写入新数据)  一个key中存储的value值最大为 1g的字节数据

 

2.存储类型

   memcached 类似于一个巨大的hashTable 

   redis 存储类型多样、底层保存字节数组

 

3.数据持久化

   memcached 存数据于内存,超出之后,清除失效keylru机制清除最近最少用的key

   redis 存数据于内存  可持久化到磁盘,重启之后可继续加载使用

 

参考:

http://blog.csdn.net/tonysz126/article/details/8280696/

http://www.tuicool.com/articles/M7fiMv

http://www.blogjava.net/paulwong/archive/2013/09/06/403746.html

 

 

 

 

 

 

 

  • 大小: 163 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics