技术列传 guava cache

技术列传 guava cache

(2013-01-22 10:05:15)
标签:

it

java

cache

分类: IT技术

Guava cache是轻量级的内存缓存框架,相比于memcache来说适用场景各不相同,虽然用法相对于差不多,不过memcache更多的时候是维护一张内存中一张很大的hash表,基于分布式应用减少对数据库的很庞大的表耗性能操作,而这里要讲的guava cache多用于缓存经常读表的结果放在内存中,可以把表里经常读取的字段结果缓存,我们这里涉及的背景为:

我们从第三方接口获取我们所需的信息,为了防止频繁的调用接口,我们将其结果缓存,为了程序的健壮性,防止当对方接口不可用时我们的程序崩溃掉,我们每过 段时间,就把缓存的结果存到数据库中去。又因为我们所需要的信息过段时间第三方就会更新,所以我们需要过期控制,缓存结果过期,就应该重新调用第三方接口 获取信息,不过幸好guava cache已有此机制帮我们实现了。

具体代码详解如下:

LoadingCache<Object, Object> cache = CacheBuilder.newBuilder()

.maximumSize(this.getTotalNum())  //缓存队列最大长度

.expireAfterAccess(this.getInterval(), TimeUnit.MILLISECONDS) //缓存时效

.build(new CacheLoader<Object, Object>(){ //信息获取策略 当缓存队列没有或者过期移除了此结果,从第三方重新获取getKeyFromU为第三方方法

@Override

public String load(Object key) throws Exception{

return getKeyFromU(key);

}

});

Map<Object, Object> result = BaseCCMSKey.this.cache.asMap();

把此map结果序列化进数据库就好了,当第三方接口报错,便可直接从数据库中读取了。

更多操作比如手动刷新,删除,监听器,以及更多的缓存策略请查阅相关文档。

posted on 2013-02-21 16:08  adolfmc  阅读(1380)  评论(0编辑  收藏  举报