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的区别是什么? (阅读:6906)
- 谈冷热数据 (阅读:5939)
- Linux操作系统中内存buffer和cache的区别 (阅读:5375)
- 学习:一个并发的Cache (阅读:5129)
- 关于Linux的文件系统cache (阅读:4930)
- Twitter架构图(cache篇) (阅读:4858)
- 7个示例科普CPU Cache (阅读:4306)
- 详解MyISAM Key Cache(前篇) (阅读:4138)
- [squid] 过期时间在 60 秒内 squid 不 Cache 的问题 (阅读:4127)
- 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?) (阅读:3592)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:longhao 来源: 龙浩的blog
- 标签: Cache Guava
- 发布时间:2012-04-07 14:43:40
-
[84] memory prefetch浅析
-
[54] 基本排序算法的PHP实现
-
[49] 深入浅出cassandra 4 数据一致性问
-
[44] 转载:cassandra读写性能原理分析
-
[39] MySQL半同步存在的问题
-
[39] Inline Form Labels
-
[38] JS中如何判断字符串类型的数字
-
[38] javascript插入样式
-
[38] 字符引用和空白字符
-
[37] 获取Dom元素的X/Y坐标