Guava---缓存
来源:互联网 发布:大数据产业发展对策 编辑:程序博客网 时间:2024/05/22 19:43
google guava框架提供了内存缓存的功能,可以很方便的缓存对象,设置生命周期, 及缓存对象的弱引用 强应用 软引用等.
所在包:package com.google.common.cache;
//LoadingCache在缓存项不存在时可以自动加载缓存private LoadingCache<Key,String> dictCache = CacheBuilder.newBuilder() .maximumSize(200)//设置缓存最大容量为200,超过200之后就会按照LRU最近虽少使用算法来移除缓存项 .expireAfterWrite(30, TimeUnit.MINUTES)//设置写缓存后30分钟过期,过期后会触发removalListener .concurrencyLevel(4)//并发级别为4,并发级别是指可以同时写缓存的线程数 .removalListener(new RemovalListener<Object, Object>() {//这段代码可以移除 @Override public void onRemoval(RemovalNotification<Object, Object> notification) { LOG.debug(""); } }) //build方法中可以指定CacheLoader,在缓存不存在时通过CacheLoader的实现自动加载缓存 .build( .build(new CacheLoader<Key,String>() { @Override public String load(Key key) throws Exception { return loadFromDb(key); } });
guava缓存过期时间分为两种,一种是从写入时开始计时,一种是从最后访问时间开始计时,而且guava缓存的过期时间是设置到整个一组缓存上的;这和EHCache,redis,memcached等不同,这些缓存系统设置都将缓存时间设置到了单个缓存上。
guava缓存设计成了一组对象一个缓存实例,这样做的好处是一组对象设置一组缓存策略,你可以根据不同的业务来设置不同的缓存策略,包括弱引用,软引用,过期时间,最大项数等。另外一点好处是你可以根据不同的组来统计缓存的命中率,这样更有意义一些。
这样做也是有缺点的,缺点是首先是每个缓存组都需要声明不同的缓存实例,具体到业务程序中可能就是每个业务对象一个缓存了。这样就把不同的业务缓存分散到不同的业务系统中了,不太好管理。
参考文献:
使用google guava做内存缓存
0 0
- Guava---缓存
- guava缓存
- guava缓存
- Guava缓存
- [Google Guava]-缓存详解
- [Google Guava]-缓存清除
- Google Guava-缓存
- Guava 缓存 使用
- Guava Cache缓存
- Google Guava-缓存
- [Google Guava] 3-缓存
- [Google Guava] 缓存
- goggle 缓存guava
- 三、Guava的缓存
- [Google Guava] 3-缓存
- guava实现本地缓存
- guava缓存底层实现
- google Guava缓存
- synchronized关键字详解
- 关于DB笔录
- Redis集群搭建
- Android 渐变色
- 隐藏软键盘
- Guava---缓存
- 使用第三方代码托管平台进行项目开发
- 发电企业必读:新电改后如何“尝鲜”售电业务?
- compare with two XML
- 23、BOM操作
- 高逼格,超简单,实现App自动更新,一个方法搞定
- UltraEdit常用快捷键
- php的ticks
- 病毒加壳技术与脱壳杀毒方法解析【转载】