一、简介
guava和ehcache一样也是本地缓存,虽然都是本地缓存,但是有着不同的使用场景。guava是谷歌提供的一个Java工具包,而Guava的Cache部分提供了一套分词完善的本地存储缓存机制,在Guave之前ConcurrentMap,因为能友好的支持并发而经常被用作本地缓存,但它毕竟不具备缓存的一些特性,比如缓存过期,缓存数据加载和刷新等。
二、使用场景
1、原意消耗一些本地内存空间提升速度
2、更新锁定
什么是更新锁呢,当某个缓存失效的时候,大量请求去查询某一个key 当这个key不存在,就会导致多次从数据库中加载数据,Guava cache 可以在cacheloader 的 load方法众加以控制,对同一个key只让一个请求去数据库众读取数据,而其他请求阻塞等待结果。
三、Guava cache 的创建方式
1、CacheLoader创建
LoadingCache<String, Object> loadingCache = CacheBuilder.newBuilder() /*设置缓存容器的初始容量大小为10*/ .initialCapacity(10) /*设置缓存容器的最大容量大小为100*/ .maximumSize(100) /*设置记录缓存命中率*/ .recordStats() /*设置并发级别为8,智并发基本值可以同事些缓存的线程数*/ .concurrencyLevel(8) /*设置过期时间为2秒*/ .expireAfterAccess(2, TimeUnit.SECONDS).build(new CacheLoader<String, Object>() { @Override public Object load(String key) throws Exception { System.out.println(System.currentTimeMillis() + " 缓存失效。。。"); return key + ": cache-value"; } }); /**获取缓存值,这里get方法会抛出 ExecutionException 异常,如果不想让他抛出异常 使用getUnchecked方法 */ System.out.println( loadingCache.getUnchecked("111") ); /**打印缓存命中率*/ System.out.println( loadingCache.stats().toString() );2、使用Callable方式创建
相关推荐
【描述】:在企业级项目开发中,缓存技术起着至关重要的作用,数据库设计往往也会考虑缓存策略。本地缓存和分布式缓存是常见的两种缓存方式,其中Guava Cache作为常用的本地缓存工具,将在本章节中进行详细介绍。 ...
在现代Web应用开发中,缓存机制扮演着至关重要的角色,它可以提高数据访问速度,减轻数据库的压力,从而提升系统的整体性能。...同时,对于Java开发者来说,熟悉这些缓存技术也是提高应用性能的重要技能之一。
**Java缓存技术深入了解** Java缓存技术是提高应用程序性能的关键技术之一,它通过存储经常访问的数据,减少了对数据库或其他慢速数据源的依赖,从而加快了数据的获取速度。本篇文章将深入探讨Java中的缓存实现,...
深入理解Java缓存技术可以帮助我们设计出更加高效、响应迅速的系统。在这个主题下,我们将探讨Java缓存的基本概念、常用框架以及实现策略。 首先,让我们了解什么是缓存。缓存是一种存储技术,它允许我们在短时间内...
**JAVA缓存技术详解** Java缓存技术是提高应用程序性能的关键技术之一,它通过存储频繁访问的数据,减少了对慢速资源(如磁盘或远程服务)的依赖,从而提升了系统的响应速度。本篇将深入探讨Java缓存技术的原理、...
在现代Web应用开发中,缓存技术扮演着至关重要的角色,能够显著提升系统性能,减少数据库压力。Spring Boot框架结合Google的Guava库提供了便捷的缓存管理功能。本文将深入探讨如何在Spring Boot项目中集成并使用...
开源项目-goburrow-cache.zip 是一个基于Go语言实现的本地缓存库,它受到了Google的Guava Cache的启发,旨在为Go开发者提供类似于Guava Cache的功能。Guava Cache是Java开发中的一个流行缓存解决方案,而goburrow-...
- 与Guava Cache对比:Guava Cache是Google提供的轻量级缓存,适用于简单场景,而EhCache功能更强大,更适合大型企业应用。 7. 性能优化: - 使用内存管理策略:例如设置内存池、调整缓存大小以优化内存使用。 -...
Guava Cache是Google Guava库的一部分,提供了一个更高级的缓存解决方案。Guava Cache允许预加载、自定义缓存大小限制以及异步加载。它还提供了丰富的统计信息,帮助开发者监控和优化缓存性能。Guava Cache的强项...
在Java编程中,Map接口是数据结构中非常重要的一个部分,它提供了键值对的存储方式,便于快速...在实际应用中,还可以考虑使用第三方库如Google的Guava Cache或Spring框架的Cache Abstraction来简化缓存的实现和管理。
- **Guava Cache**:Google提供的Guava库包含了强大的缓存功能。通过`LoadingCache`接口,我们可以自定义缓存加载逻辑,例如使用`CacheLoader`加载数据到缓存。源码中,`get`方法会检查缓存中是否存在指定键,若不...
Guava是Google开发的一个Java实用工具库,包含大量核心库的集合、缓存、并发库、原生类型支持、字符串处理、I/O等工具。在Mahout中,Guava提供了基础数据结构和算法,如高效的数据容器、集合操作以及并行计算的支持...
Guava,全名Google Guava,是由Google开发的一个开源Java库,它包含了大量在Google核心库中被广泛使用的、针对集合类的实用工具,以及并发、缓存、事件监听、I/O、字符串处理、随机数生成等多方面的功能。...
1. 内存缓存:Java中最常用的内存缓存框架是Google的Guava Cache。Guava Cache提供了一种便捷的方式来管理和存储缓存数据,支持自动过期、大小限制等特性。它允许开发者自定义加载策略,当缓存中没有所需数据时,...
在构建大型网站时,缓存技术是至关重要的性能优化手段,尤其是在使用JAVA作为主要开发语言的环境中。JAVA缓存能够显著提升系统响应速度,减少数据库负载,为用户提供更流畅的体验。本文将深入探讨JAVA缓存及其在大型...
一个经典的开源缓存库是Google的Guava Cache。Guava Cache提供了线程安全的本地缓存实现,支持自定义加载函数、过期时间、大小限制等特性。源码中,你可以看到它使用了Striped64来实现并发控制,以及WeakReference和...
在实际应用中,SimpleCache可能与其他Java缓存框架,如Ehcache、Guava Cache或Spring框架的Cache抽象层进行对比。Ehcache是一个更全面的缓存解决方案,提供了分布式缓存功能,适合大型系统;Guava Cache是Google提供...
【标题】:Guava Tests 17.0与开源文件缓存项目FileCache 【描述】:Guava Tests 17.0是一个Google维护的Java库,它包含了大量的测试用例,用于验证Guava库的各种功能。Guava是Google的一个核心库,提供了许多Java...
2. **Guava Cache**:Google的Guava库提供了一个强大的`Cache`接口,支持自动过期、弱引用、软引用等高级特性。通过`LoadingCache`,我们可以配置一个自动加载新值到缓存中的功能,当缓存项不存在时,会调用预定义的...
3. **Guava库的`LoadingCache`**:Google的Guava库提供了强大的缓存功能,可以自动处理缓存过期和清理。 ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; ...