`
hpgary
  • 浏览: 81722 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java缓存技术-google guava cache

    博客分类:
  • Java
 
阅读更多

一、简介

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方式创建

 

Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(100).build();
		
String resultval = cache.get("key01", new Callable<String>() {
   public String call() throws Exception {
	return "key01-value";
   }
}) ;
System.out.println( resultval );
 两种方式都有不同的使用场景,希望能合理使用 
3、主动删除缓存
删除某一个缓存 invalidate("key01")
删除所有缓存 invalidateAll() 
分享到:
评论

相关推荐

    第七章 企业项目开发--本地缓存guava cache1

    【描述】:在企业级项目开发中,缓存技术起着至关重要的作用,数据库设计往往也会考虑缓存策略。本地缓存和分布式缓存是常见的两种缓存方式,其中Guava Cache作为常用的本地缓存工具,将在本章节中进行详细介绍。 ...

    spring-boot-redis-guava-caffeine-cache:springboot 使用 redis guava caffeine 缓存示例

    在现代Web应用开发中,缓存机制扮演着至关重要的角色,它可以提高数据访问速度,减轻数据库的压力,从而提升系统的整体性能。...同时,对于Java开发者来说,熟悉这些缓存技术也是提高应用性能的重要技能之一。

    Java缓存技术深入了解

    **Java缓存技术深入了解** Java缓存技术是提高应用程序性能的关键技术之一,它通过存储经常访问的数据,减少了对数据库或其他慢速数据源的依赖,从而加快了数据的获取速度。本篇文章将深入探讨Java中的缓存实现,...

    JAVA缓存技术深入了解

    深入理解Java缓存技术可以帮助我们设计出更加高效、响应迅速的系统。在这个主题下,我们将探讨Java缓存的基本概念、常用框架以及实现策略。 首先,让我们了解什么是缓存。缓存是一种存储技术,它允许我们在短时间内...

    JAVA缓存技术_深入了解.ppt

    **JAVA缓存技术详解** Java缓存技术是提高应用程序性能的关键技术之一,它通过存储频繁访问的数据,减少了对慢速资源(如磁盘或远程服务)的依赖,从而提升了系统的响应速度。本篇将深入探讨Java缓存技术的原理、...

    springbt_guava_cache.7z

    在现代Web应用开发中,缓存技术扮演着至关重要的角色,能够显著提升系统性能,减少数据库压力。Spring Boot框架结合Google的Guava库提供了便捷的缓存管理功能。本文将深入探讨如何在Spring Boot项目中集成并使用...

    开源项目-goburrow-cache.zip

    开源项目-goburrow-cache.zip 是一个基于Go语言实现的本地缓存库,它受到了Google的Guava Cache的启发,旨在为Go开发者提供类似于Guava Cache的功能。Guava Cache是Java开发中的一个流行缓存解决方案,而goburrow-...

    基于java的ehcache(Java缓存框架 EhCache).zip

    - 与Guava Cache对比:Guava Cache是Google提供的轻量级缓存,适用于简单场景,而EhCache功能更强大,更适合大型企业应用。 7. 性能优化: - 使用内存管理策略:例如设置内存池、调整缓存大小以优化内存使用。 -...

    java缓存类

    Guava Cache是Google Guava库的一部分,提供了一个更高级的缓存解决方案。Guava Cache允许预加载、自定义缓存大小限制以及异步加载。它还提供了丰富的统计信息,帮助开发者监控和优化缓存性能。Guava Cache的强项...

    java map 实现缓存技术

    在Java编程中,Map接口是数据结构中非常重要的一个部分,它提供了键值对的存储方式,便于快速...在实际应用中,还可以考虑使用第三方库如Google的Guava Cache或Spring框架的Cache Abstraction来简化缓存的实现和管理。

    java缓存数据

    - **Guava Cache**:Google提供的Guava库包含了强大的缓存功能。通过`LoadingCache`接口,我们可以自定义缓存加载逻辑,例如使用`CacheLoader`加载数据到缓存。源码中,`get`方法会检查缓存中是否存在指定键,若不...

    mahout的guava-r09-jar

    Guava是Google开发的一个Java实用工具库,包含大量核心库的集合、缓存、并发库、原生类型支持、字符串处理、I/O等工具。在Mahout中,Guava提供了基础数据结构和算法,如高效的数据容器、集合操作以及并行计算的支持...

    guava-18.0.jar

    Guava,全名Google Guava,是由Google开发的一个开源Java库,它包含了大量在Google核心库中被广泛使用的、针对集合类的实用工具,以及并发、缓存、事件监听、I/O、字符串处理、随机数生成等多方面的功能。...

    java中的缓存技术

    1. 内存缓存:Java中最常用的内存缓存框架是Google的Guava Cache。Guava Cache提供了一种便捷的方式来管理和存储缓存数据,支持自动过期、大小限制等特性。它允许开发者自定义加载策略,当缓存中没有所需数据时,...

    JAVA缓存与大型网站架

    在构建大型网站时,缓存技术是至关重要的性能优化手段,尤其是在使用JAVA作为主要开发语言的环境中。JAVA缓存能够显著提升系统响应速度,减少数据库负载,为用户提供更流畅的体验。本文将深入探讨JAVA缓存及其在大型...

    java 数据缓存

    一个经典的开源缓存库是Google的Guava Cache。Guava Cache提供了线程安全的本地缓存实现,支持自定义加载函数、过期时间、大小限制等特性。源码中,你可以看到它使用了Striped64来实现并发控制,以及WeakReference和...

    基于Java的Java缓存工具 SimpleCache.zip

    在实际应用中,SimpleCache可能与其他Java缓存框架,如Ehcache、Guava Cache或Spring框架的Cache抽象层进行对比。Ehcache是一个更全面的缓存解决方案,提供了分布式缓存功能,适合大型系统;Guava Cache是Google提供...

    guava-tests-17.0.zip

    【标题】:Guava Tests 17.0与开源文件缓存项目FileCache 【描述】:Guava Tests 17.0是一个Google维护的Java库,它包含了大量的测试用例,用于验证Guava库的各种功能。Guava是Google的一个核心库,提供了许多Java...

    java cache 简单应用

    2. **Guava Cache**:Google的Guava库提供了一个强大的`Cache`接口,支持自动过期、弱引用、软引用等高级特性。通过`LoadingCache`,我们可以配置一个自动加载新值到缓存中的功能,当缓存项不存在时,会调用预定义的...

    java之反射优化(缓存思路)源码

    3. **Guava库的`LoadingCache`**:Google的Guava库提供了强大的缓存功能,可以自动处理缓存过期和清理。 ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; ...

Global site tag (gtag.js) - Google Analytics