一、简介

guava和ehcache一样也是本地缓存,虽然都是本地缓存,但是有着不同的使用场景。guava是谷歌提供的一个Java工具包,而Guava的Cache部分提供了一套分词完善的本地存储缓存机制,在Guave之前ConcurrentMap,因为能友好的支持并发而经常被用作本地缓存,但它毕竟不具备缓存的一些特性,比如缓存过期,缓存数据加载和刷新等。

二、使用场景

1、原意消耗一些本地内存空间提升速度

2、更新锁定

什么是更新锁呢,当某个缓存失效的时候,大量请求去查询某一个key 当这个key不存在,就会导致多次从数据库中加载数据,Guava cache 可以在cacheloader 的 load方法众加以控制,对同一个key只让一个请求去数据库众读取数据,而其他请求阻塞等待结果。

三、Guava cache 的创建方式

1、CacheLoader创建

Java代码  
  1. LoadingCache<String, Object> loadingCache = CacheBuilder.newBuilder()
  2. /*设置缓存容器的初始容量大小为10*/
  3. .initialCapacity(10)
  4. /*设置缓存容器的最大容量大小为100*/
  5. .maximumSize(100)
  6. /*设置记录缓存命中率*/
  7. .recordStats()
  8. /*设置并发级别为8,智并发基本值可以同事些缓存的线程数*/
  9. .concurrencyLevel(8)
  10. /*设置过期时间为2秒*/
  11. .expireAfterAccess(2, TimeUnit.SECONDS).build(new CacheLoader<String, Object>() {
  12. @Override
  13. public Object load(String key) throws Exception {
  14. System.out.println(System.currentTimeMillis() + " 缓存失效。。。");
  15. return key + ": cache-value";
  16. }
  17. });
  18. /**获取缓存值,这里get方法会抛出 ExecutionException 异常,如果不想让他抛出异常 使用getUnchecked方法 */
  19. System.out.println( loadingCache.getUnchecked("111") );
  20. /**打印缓存命中率*/
  21. System.out.println( loadingCache.stats().toString() );

2、使用Callable方式创建

Java代码  
  1. Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(100).build();
  2. String resultval = cache.get("key01", new Callable<String>() {
  3. public String call() throws Exception {
  4. return "key01-value";
  5. }
  6. }) ;
  7. System.out.println( resultval );

两种方式都有不同的使用场景,希望能合理使用

3、主动删除缓存
删除某一个缓存 invalidate("key01")
删除所有缓存 invalidateAll() 

Java缓存技术-google guava cache相关推荐

  1. 正则表达式 guava_带有正则表达式模式的Google Guava Cache

    正则表达式 guava 最近我看到了一个关于Google Guava的不错的介绍 ,我们在我们的项目中得出结论,使用它的缓存功能真的很有趣. 让我们看一下regexp Pattern类及其编译功能 . ...

  2. 带有正则表达式模式的Google Guava Cache

    最近我看到了一个关于Google Guava的精彩演讲 ,我们在我们的项目中得出结论,使用它的缓存功能真的很有趣. 让我们看一下regexp Pattern类及其编译功能 . 在代码中经常可以看到,每 ...

  3. (翻译)Google Guava Cache

    翻译自Google Guava Cache This Post is a continuation of my series on Google Guava, this time covering G ...

  4. 多级缓存之Google Guava的实现方案

    文章目录 背景 如何创建? pom引入依赖 CacheLoader方式 何时使用? 案例 CacheBuilder 的详细方法 Callable方式 何时使用? 案例 如何删除? 被动 基于数据大小的 ...

  5. mysql caching_Spring Caching抽象和Google Guava Cache

    mysql caching Spring为缓存昂贵的方法调用提供了强大的现成支持. 这里详细介绍了缓存抽象. 我的目标是使用Spring Guava Cache涵盖Spring现在提供的4.0+版本的 ...

  6. javax.cache_新的Java缓存标准(javax.cache)

    javax.cache 这篇文章探讨了新的Java缓存标准:javax.cache. 它如何适应Java生态系统 该标准由JSR107开发,作者是共同规范负责人. JSR107包含在JSR342开发的 ...

  7. Spring Caching抽象和Google Guava Cache

    Spring为缓存昂贵的方法调用提供了强大的开箱即用支持. 这里详细介绍了缓存抽象. 我的目的是要介绍Spring现在为框架的4.0+版本提供的较新的缓存实现之一-使用Google Guava Cac ...

  8. 新的Java缓存标准(javax.cache)

    这篇文章探讨了新的Java缓存标准:javax.cache. 它如何适应Java生态系统 该标准由JSR107开发,作者是共同规范负责人. JSR107包含在JSR342开发的Java EE 7中. ...

  9. guava_使用Google Guava Cache进行本地缓存

    guava 很多时候,我们将不得不从数据库或另一个Web服务获取数据或从文件系统加载数据. 在涉及网络呼叫的情况下,将存在固有的网络延迟,网络带宽限制. 解决此问题的方法之一是在应用程序本地拥有一个缓 ...

  10. Java内存缓存-通过Google Guava创建缓存

    谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中.实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问. Guava ...

最新文章

  1. idea maven中的profiles是干什么的
  2. java pkcs1转pkcs8_pkcs1与pkcs8格式RSA私钥互相转换
  3. vue.js点击更多加载更多数据,双数组合并
  4. zabbix api python使用
  5. 回归分析beta值的标准_多因子建模:回归法和打分法
  6. adobe acrobat pro dc 无法打开PDF_pdf怎样转成word格式
  7. Day6789:Keep Calm N Carry On
  8. win的反义词_初中阶段常用的133个英语单词反义词!
  9. 内部收益率计算公式用计算机,用EXCEL计算财务内部收益率
  10. Activiti工作流之任务的运行/查询/完成
  11. Web3+品牌的大杀器:DAO如何实现对传统品牌彻底的降维打击
  12. MATLAB应用——曲线长度的求解
  13. linux cp 中文文件名,linux下将中文文件名文件cp到windows目录下后文件名乱码问题的解决...
  14. 链接和二维码被微信拦截(被封锁、被屏蔽、被和谐)的最新解决方法——MaxJump
  15. 使用聊天机器人做客服工作是一种什么体验?
  16. MG63骨肉瘤细胞膜包覆纳米载体|U2OS骨肉瘤细胞膜包覆纳米粒
  17. 故障诊断1—基础理论
  18. hexo提交报错 unable to access ‘https://github.com/*/*.github.io.git/‘: Couldn‘t resolve host ‘github.com
  19. C# FileSystemWatcher使用说明
  20. 河北外国语学院单招计算机类专业,【单招专业代码】报考河北外国语学院,2019年单招专业代码全集...

热门文章

  1. 【遥感影像处理与分析】遥感影像校正详解-辐射校正、几何校正流程与方法比较
  2. 图解TCPIP---第五章---IP协议相关技术
  3. 物流行业GPS定位应用解决方案
  4. 【视频分享】尚硅谷Oracle视频教程
  5. 计算机 高新 会计电算化,会计软件应用(用友软件系列)用友通T3试题汇编 , 会计电算化员级[电子资源]...
  6. 泛微OA前端代码开发方式
  7. Arduino ESP32 最简单直接获取网络时间方法
  8. 最全“Java面试宝典+Java核心知识集”
  9. velocity语法小结
  10. java session 超时_Javaweb项目session超时解决方案