google guava框架实现的缓存可以很方便的对需要的缓存对象设置生命周期,及缓存对象的弱引用 强应用 软引用等
public static void main(String[] args) throws InterruptedException { Cache<String, Book> cahce=CacheBuilder.newBuilder().expireAfterAccess(8, TimeUnit.SECONDS).maximumSize(10).build(new CacheLoader<String, Book>() { @Override public Book load(String key) throws Exception { Book b=new Book(); return b; } }); Book b=cahce.apply("q"); System.out.println(b); Book b2=cahce.apply("q"); System.out.println(b2); Thread.currentThread(); Thread.sleep(TimeUnit.SECONDS.toMillis(10)); Book b3=cahce.apply("q"); System.out.println(b3); }
输出:
org.zero.resource.Book@be2358
org.zero.resource.Book@be2358
org.zero.resource.Book@32fb4f
可见对象book对象的缓存在8秒后被移除.
下面来看maximumSize(1) 的作用,是指最大缓存对象的数目
public static void main(String[] args) throws InterruptedException { CacheBuilder<String, Book> cahceBuilder=CacheBuilder.newBuilder().expireAfterAccess(8, TimeUnit.SECONDS).maximumSize(1).removalListener(new RemovalListener<String, Book>() { @Override public void onRemoval(RemovalNotification<String, Book> rn) { System.out.println(rn.getKey()+"被移除"); } }); Cache<String, Book> cahce=cahceBuilder.build(new CacheLoader<String, Book>() { @Override public Book load(String key) throws Exception { Book b=new Book(); return b; } }); Book book_1_0=cahce.apply("book_1");//缓存book_1对象 System.out.println(book_1_0); Book book_2_0=cahce.apply("book_2");//因为maximumSize设为1,故不能同时缓存两个或两个以上的对象,所以必须先移除之前的缓存对象book_1 再缓存book_2对象 System.out.println(book_2_0); Book book_1_1=cahce.apply("book_1");//获取book_1 对象,如果存在则返回,否则创建新的对象,并将之缓存(book_2会被移除). System.out.println(book_1_1); Book book_2_1=cahce.apply("book_2"); System.out.println(book_2_1);//org.zero.resource.Book@133f1d7 Book book_2_1_=cahce.apply("book_2"); System.out.println(book_2_1_);//org.zero.resource.Book@133f1d7 }
输出:
org.zero.resource.Book@1ed2ae8
book_1被移除
org.zero.resource.Book@32fb4f
book_2被移除
org.zero.resource.Book@1113708
book_1被移除
org.zero.resource.Book@133f1d7
org.zero.resource.Book@133f1d7
当maximumSize设置为2或更大值时,输出:
org.zero.resource.Book@1ed2ae8
org.zero.resource.Book@19c26f5
org.zero.resource.Book@1ed2ae8
org.zero.resource.Book@19c26f5
org.zero.resource.Book@19c26f5
可见,并未移除任何对象
=============================guava15 版后,有所改动============================
在新版本中(有可能在15之前就已经改变了),Cache 新增了子接口LoadingCache,和子类LocalManualCache ,子抽象类ForwardingCache 等. Cache使用接口有所改变,但是不大.
Cache接口中移除了apply 等方法, 在LoadingCache 中以get()或者getUnchecked() 代替
相关推荐
本案例代码将详细介绍Guava Cache的使用,包括缓存的创建、删除、获取、失效监听、加载以及淘汰策略。 1. **缓存创建**: Guava Cache可以通过CacheBuilder类创建。CacheBuilder提供了丰富的配置选项,如最大容量...
》这篇博客中,作者详细介绍了如何利用Guava Cache作为本地缓存来补充或增强分布式缓存的使用。 1. **初始化Guava Cache** 初始化Guava Cache时,可以通过`LoadingCache`接口创建一个自定义配置的缓存实例。例如,...
在本文中,我们将介绍如何在 SpringBoot 项目中使用 Guava Cache 实现本地缓存。Guava Cache 是一个高性能的缓存框架,由 Google 开发维护。它提供了一个灵活的缓存机制,可以根据实际需求进行配置。 首先,我们...
在这个名为 "Guava-Cache-Demo" 的项目中,我们将深入探讨如何利用 Guava Cache 来实现缓存机制,并通过一个实际示例——使用 Google Books API 获取 ISBN 对应图书详情——来展示其用法。 首先,我们需要理解 ...
SpringBoot 使用 GuavaCache 实现简单缓存处理 在本篇文章中,我们将介绍如何使用 GuavaCache 在 SpringBoot 项目中实现简单的缓存处理。缓存机制可以减少对外部服务的查询请求,从而提高应用程序的性能。 问题...
SpringBoot整合GuavaCache缓存过程解析是指使用SpringBoot框架将GuavaCache整合到应用程序中,以提高应用程序的性能和响应速度。 GuavaCache的优点是: * 简单:GuavaCache的使用非常简单,只需要在pom.xml文件中...
Guava Cache是Java领域广泛使用的高效缓存解决方案,但Go语言本身并未直接提供与Guava Cache类似的功能。然而,开发者可以借鉴Guava Cache的设计理念,使用Go的标准库或者其他第三方库来实现类似的本地缓存机制。`...
Java内存缓存工具Guava LoadingCache使用解析 Java内存缓存工具Guava LoadingCache是一个非常强大的缓存工具,广泛应用于各种Java项目中。Guava Cache是单个应用运行时的本地缓存,用于将数据缓存到JVM内存中,提高...
在使用Guava Cache之前,需要在pom.xml文件中添加相应的依赖,包括Spring Boot、MyBatis、MySQL和Guava Cache等。在配置Guava Cache时,需要创建一个GuavaCacheConfig配置类,并在其中设置CacheManager。 ...
一、Guava Cache的基本使用 1. 引入依赖 在项目中引入Guava库,如pom.xml文件中添加如下依赖: ```xml <groupId>com.google.guava</groupId> <artifactId>guava <version>14.0.1 ``` 请注意,版本号可能需要...
Guava Cache是Google Guava库中的一个功能强大的本地缓存实现,它为Java开发者提供了高效、易用的缓存解决方案。...通过学习和熟练使用Guava Cache,开发者可以更好地优化应用程序的性能,提升用户体验。
创建一个Guava Cache对象,你可以通过`LoadingCache`接口,它在缓存项缺失时会自动加载。例如: ```java LoadingCache, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) // 设置最大缓存容量 ....
本文将深入探讨如何在Spring Boot项目中集成并使用Guava Cache,以实现高效、灵活的缓存策略。 一、Spring Boot与Guava Cache简介 1. Spring Boot:作为Spring框架的微服务启动器,Spring Boot简化了Java应用的...
Go中的Guava Cache的Mango Cache部分实现。 支持的缓存替换策略:LRU分段LRU(默认)TinyLFU(实验性)TinyLFU实现的灵感源于Ben Manes的Caffeine和Go中的Guava Cache的Mango Cache Partial实现。 支持的缓存替换...
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习...├─Google Guava 第34讲-Guava Cache之RecordStats,CacheBuilderSpec详解.wmv
Guava Cache与Redis的结合使用可以形成一个强大的缓存解决方案。Guava Cache可以作为本地缓存,快速响应,降低延迟,而Redis作为远程缓存,可以在多台服务器间共享数据,提高系统的伸缩性和可靠性。当本地缓存无法...
Springboot集成本地缓存Guava本章介绍一个比较好用的本地缓存Guava0x01、添加依赖0x02、添加GuavaLocalCache提供了设置超时时
LoadingCache 是 Guava 库提供的一种缓存实现方式,本文将详细介绍如何基于 LoadingCache 实现 Java 本地缓存。 一、Guava 介绍 Guava 是 Google 开源的一套工具库,其中提供的 cache 模块非常方便,是一种与 ...
Guava Cache还支持异步加载和弱引用键值对,以优化内存使用。 3. **Collections** Guava对Java集合框架进行了扩展,引入了如Multiset(多集)、Multimap(多映射)、ImmutableList、ImmutableSet和ImmutableMap...