Google Guava V11 中的Cache操作
Google Guava cache的主要功能点:
* 你需要给现有系统加速;
* 有些key需要不知一次的查询获取;
* 从策略上讲,你的应用需要从策略上把所有的value从cache中清理出来 — 你试图减少重复的工作;[注:weakKey , weakValue]
* cache仅仅存储在内存中,没有在文件中或者其他的server上面,如果不满足你的需求,可以考虑Memcached
API的两种调用方式
1:普通的调用方式,通过key得到value的时间较短
2:延迟加载的处理方式,通过key得到value的时间较长
回收的参数设置
1. 大小的设置:CacheBuilder.maximumSize(long) CacheBuilder.weigher(Weigher) CacheBuilder.maxumumWeigher(long)
2. 时间:expireAfterAccess(long, TimeUnit) expireAfterWrite(long, TimeUnit)
3. 引用:CacheBuilder.weakKeys() CacheBuilder.weakValues() CacheBuilder.softValues()
4. 明确的删除:invalidate(key) invalidateAll(keys) invalidateAll()
5. 删除监听器:CacheBuilder.removalListener(RemovalListener)
refresh机制
1. LoadingCache.refresh(K) 在生成新的value的时候,旧的value依然会被使用。
2. CacheLoader.reload(K, V) 生成新的value过程中允许使用旧的value
3. CacheBuilder.refreshAfterWrite(long, TimeUnit) 自动刷新cache
未来要实现的功能
1. 更多统计信息,通过Cache.stats()来获取统计类CacheStats,例如缓存命中率,缓存获取实践统计等
2. asMap,把缓存动作一个ConcurrentMap
参考资料 :http://code.google.com/p/guava-libraries/wiki/CachesExplained#Inserted_Directly
建议继续学习:
- Buffer和cache的区别是什么? (阅读:6823)
- 谈冷热数据 (阅读:5732)
- Linux操作系统中内存buffer和cache的区别 (阅读:5305)
- 学习:一个并发的Cache (阅读:4968)
- 关于Linux的文件系统cache (阅读:4773)
- Twitter架构图(cache篇) (阅读:4719)
- 详解MyISAM Key Cache(前篇) (阅读:4064)
- 7个示例科普CPU Cache (阅读:4112)
- [squid] 过期时间在 60 秒内 squid 不 Cache 的问题 (阅读:3960)
- 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?) (阅读:3516)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:longhao 来源: 龙浩的blog
- 标签: Cache Guava
- 发布时间:2012-04-07 14:43:40
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] android 开发入门
- [59] 【社会化设计】自我(self)部分――欢迎区
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成