博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava cache功能整理
阅读量:7030 次
发布时间:2019-06-28

本文共 1822 字,大约阅读时间需要 6 分钟。

说明:
生成的高速缓存是CacheBuilder可序列化的
内存key-value具有concurrentHashMap哈希表的特性,并发安全
默认情况下缓存使用equals方法进行比较,如果创建时指定了weakKeys(),则使用==进行判断相等
同样如果指定softValues或者weakValues时使用==进行判断相等性;
 
超时机制:
当请求maximumSize,maximumWeight,expireAfterWrite,expireAfterAccess,weakKeys,weakValues或softValues中的任何一个时,条目将自动从缓存中逐出。
如果请求maximumSize或maximumWeight,则可以在每次高速缓存修改时逐出条目。
如果请求expireAfterWrite或expireAfterAccess,则可以在每次高速缓存修改,偶尔的高速缓存访​​问或调用时删除条目Cache.cleanUp()。过期的条目可能会被计数Cache.size(),但读取或写入操作将永远不可见。
如果请求weakKeys,weakValues或softValues,则垃圾收集器可以回收缓存中存在的密钥或值。
 
特点:
  • 将数据key,value缓存到Cache中
  • 当Cache中key超过指定数量时,自动删除最先创建的key
  • 根据key创建或者变更的时间,设置超时时间,超时的key自动删除,expireAfterWrite(long, TimeUnit)
  • 根据key最后一次访问的时间,设置超时时间,超时的key自动删除,expireAfterAccess(long, TimeUnit)
  • 显示的清除key,单独使用 Cache.invalidate(key)、批量使用 Cache.invalidateAll(keys)、使用的所有条目 Cache.invalidateAll()
 
用例说明:
LoadingCache
loadingCache = CacheBuilder.newBuilder().maximumSize(5)//指定缓存可能包含的最大条目数,超过此数量会自动清除.expireAfterWrite(10, TimeUnit.SECONDS)//指定在条目创建后经过固定的持续时间或最近更换其值时,应自动从缓存中删除每个条目.expireAfterAccess(10,TimeUnit.SECONDS)//指定在条目创建,最近替换其值或上次访问后经过固定持续时间后,应自动从缓存中删除每个条目。.refreshAfterWrite(10,TimeUnit.SECONDS)//指定在创建条目后经过固定持续时间或最近替换其值时,活动条目有资格进行自动刷新。.expireAfterAccess(10,TimeUnit.SECONDS)//指定在条目创建,最近替换其值或上次访问后经过固定持续时间后,活动条目有资格进行自动刷新。.initialCapacity(60)//设置内部哈希表的最小总大小.concurrencyLevel(10)//指导更新操作中允许的并发性,分段锁数量.maximumWeight(10L)//指定缓存可能包含的条目的最大权重。.recordStats()//启用CacheStats缓存操作期间的累积。.weakKeys()//指定存储在缓存中的每个键是弱引用.weakValues()//指定存储在缓存中的每个值是弱引用.softValues()//指定存储在缓存中的每个值是软引用.weigher(new Weigher
() {
//指定用于确定条目权重的权重@Overridepublic int weigh(String key, String value) {return 0;}}).build(new CacheLoader
() {@Overridepublic String load(String String) {return "111";}});String value = loadingCache.get("1");

 

转载于:https://www.cnblogs.com/use-D/p/9544915.html

你可能感兴趣的文章
Grid search in the tidyverse
查看>>
hdu 三部曲 Contestants Division
查看>>
day22——创建表、增加数据、查询数据
查看>>
css伪元素实现tootip提示框
查看>>
关于函数指针的总结
查看>>
采用PHP函数uniqid生成一个唯一的ID
查看>>
Centos7安装32位库用来安装32位软件程序
查看>>
【HMOI】小C的填数游戏 DP+线段树维护
查看>>
java中23种设计模式之6-适配器模式(adapter pattern)
查看>>
Easy C 编程 in Linux
查看>>
poj3761(反序表)
查看>>
x86寄存器总结
查看>>
jquery easyui ajax data属性传值方式
查看>>
封装了些文件相关的操作
查看>>
什么是Solr
查看>>
poj2386(简单dfs)
查看>>
双链表的基本操作
查看>>
走进异步编程的世界 - 剖析异步方法(上)
查看>>
[HAOI2006]受欢迎的牛
查看>>
docker-maven-plugin 完全免Dockerfile 文件
查看>>