`
xpchenfrank
  • 浏览: 31086 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Guava Cache 创建

阅读更多

guava是谷歌几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。

 

这篇文章主要说明下其中缓存部分的用法。这文章主要是我结合wiki中内容学习的一个小结:

 

wiki的地址如下,但是需要fan qiang访问: https://code.google.com/p/guava-libraries/wiki/CachesExplained

 

基本上可以通过两种方式来创建cache:

 

cacheLoader

 

callable callback

 

通过这两种方法创建的cache,和通常用map来缓存的做法比,不同在于,这两种方法都实现了一种逻辑——从缓存中取key X的值,如果该值已经缓存过了,则返回缓存中的值,如果没有缓存过,可以通过某个方法来获取这个值。

 

但不同的在于cacheloader的定义比较宽泛,是针对整个cache定义的,可以认为是统一的根据key值load value的方法。

 

而callable的方式较为灵活,允许你在get的时候指定。

 

下面是两种方法的例子:

 

首先是基于cacheloader的方法

 

    @Test
    public void testCacheBuilder() throws ExecutionException {

        LoadingCache<String, String> graphs = CacheBuilder.newBuilder().maximumSize(1000)
                .build(new CacheLoader<String, String>() {
                    public String load(String key) {
                        // 这里是key根据实际去取值的方法,例如根据这个key去数据库或者properties文件中取值
                        ApplicationContext context = new FileSystemXmlApplicationContext("E:/WorkDir/struts2practice/GuavaTest/WebRoot/WEB-INF/xml/springConfig.xml");
                        JdbcCustomerDAO aJdbcCustomerDAO = context.getBean(JdbcCustomerDAO.class);

                        System.out.println("load method has been invoked");
                        return aJdbcCustomerDAO.findValue(key);
                    }
                });

        String resultVal = graphs.get("testKey");
        System.out.println("first time value is: " + resultVal);

        String resultVal1 = graphs.get("testKey");
        System.out.println("second time values is: " + resultVal1);

    }

 其次是基于实现callable的方法:

@Test
    public void testCallable() throws ExecutionException {
        // 没有使用CacheLoader
        Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(1000).build();

        String resultVal = cache.get("testKey", new Callable<String>() {
            public String call() {
                // 这里先根据key实际去取值的方法,例如根据这个key去数据库或者properties文件中取值
                ApplicationContext context = new FileSystemXmlApplicationContext("E:/WorkDir/struts2practice/GuavaTest/WebRoot/WEB-INF/xml/springConfig.xml");
                JdbcCustomerDAO aJdbcCustomerDAO = context.getBean(JdbcCustomerDAO.class);

                System.out.println("resultVal call method is invoked");
                return aJdbcCustomerDAO.findValue("testKey");
            }
        });
        System.out.println("first time value is: " + resultVal);

        String resultVal1 = cache.get("testKey", new Callable<String>() {
            public String call() {
                // 这里先根据key实际去取值的方法,例如根据这个key去数据库或者properties文件中取值
                ApplicationContext context = new FileSystemXmlApplicationContext("E:/WorkDir/struts2practice/GuavaTest/WebRoot/WEB-INF/xml/springConfig.xml");
                JdbcCustomerDAO aJdbcCustomerDAO = context.getBean(JdbcCustomerDAO.class);

                System.out.println("resultVal1 call method is invoked");
                return aJdbcCustomerDAO.findValue("testKey");
            }
        });
        System.out.println("second time values is: " + resultVal1);
    }
 
分享到:
评论

相关推荐

    Guava-Cache本地缓存案例代码

    本案例代码将详细介绍Guava Cache的使用,包括缓存的创建、删除、获取、失效监听、加载以及淘汰策略。 1. **缓存创建**: Guava Cache可以通过CacheBuilder类创建。CacheBuilder提供了丰富的配置选项,如最大容量...

    guava-cache.rar

    初始化Guava Cache时,可以通过`LoadingCache`接口创建一个自定义配置的缓存实例。例如,我们可以设置最大容量、过期时间等参数: ```java LoadingCache, Graph&gt; graphs = CacheBuilder.newBuilder() .maximum...

    Go-Localcaching-GuavaCache在Go中的部分的实现

    `goburrow-cache`可能实现了这样的机制,为每个缓存项添加一个创建时间戳,并定期进行清理。 2. **大小限制**:Guava Cache允许设定缓存的最大容量,当达到上限时,会根据一定的策略(如LRU、LFU)淘汰旧的条目。在...

    SpringBoot加入Guava Cache实现本地缓存代码实例

    然后,我们创建一个 CacheServiceImpl 类,实现 CacheService 接口,并使用 Guava Cache 进行缓存: ```java @Service public class CacheServiceImpl implements CacheService { private Cache, Object&gt; common...

    详解Guava Cache本地缓存在Spring Boot应用中的实践

    在配置Guava Cache时,需要创建一个GuavaCacheConfig配置类,并在其中设置CacheManager。 CacheManager是Guava Cache的核心组件,负责管理缓存的生命周期。在GuavaCacheConfig配置类中,需要使用@Bean注解来创建...

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

    创建Guava Cache实例,可以通过CacheBuilder构建器来定制缓存的配置,例如设置最大容量、过期时间等。 ```java LoadingCache, Graph&gt; graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite...

    Guava-CacheDemo.rar

    Guava Cache是Google Guava库中的一个功能强大的本地缓存实现,它为Java开发者提供了高效、易用的缓存解决方案。Guava Cache的设计目标是为了帮助应用程序在内存中存储经常访问的数据,以减少对远程服务或者数据库的...

    springbt_guava_cache.7z

    《Spring Boot结合Guava Cache实现高效缓存管理》 在现代Web应用开发中,缓存技术扮演着至关重要的角色,能够显著提升系统性能,减少数据库压力。Spring Boot框架结合Google的Guava库提供了便捷的缓存管理功能。...

    Guava-Cache-Demo:演示如何使用 Guava 缓存

    在这个名为 "Guava-Cache-Demo" 的项目中,我们将深入探讨如何利用 Guava Cache 来实现缓存机制,并通过一个实际示例——使用 Google Books API 获取 ISBN 对应图书详情——来展示其用法。 首先,我们需要理解 ...

    Java内存缓存工具Guava LoadingCache使用解析

    Java内存缓存工具Guava LoadingCache使用...在上面的示例中,我们创建了一个Guava Cache管理器,指定了缓存池的最大大小、缓存时间和缓存类型。然后,我们使用CacheLoader来加载缓存数据,并指定了缓存项的处理逻辑。

    使用google guava 实现定时缓存功能

    创建一个Guava Cache对象,你可以通过`LoadingCache`接口,它在缓存项缺失时会自动加载。例如: ```java LoadingCache, Graph&gt; graphs = CacheBuilder.newBuilder() .maximumSize(1000) // 设置最大缓存容量 ....

    如何基于LoadingCache实现Java本地缓存

    LoadingCache 是 Guava 库提供的一种缓存实现方式,本文将详细介绍如何基于 LoadingCache 实现 Java 本地缓存。 一、Guava 介绍 Guava 是 Google 开源的一套工具库,其中提供的 cache 模块非常方便,是一种与 ...

    google开源项目guava.jar包

    此外,Guava的Cache模块则提供了一种内存缓存机制,可以根据预设策略自动清除过期的数据,有效提升了应用性能。 Guava对原生类型(如int、char等)提供了泛型支持,避免了装箱拆箱带来的额外开销。例如,Ints、...

    guava(google的java集合包)

    2. **缓存机制**:Guava的Cache模块允许开发者创建本地缓存,可以自动管理内存并支持基于时间和引用的过期策略,有效提高了应用程序的性能。 3. **并发编程支持**:Guava提供了实用的并发工具类,如...

    springboot 使用 redis guava caffeine 缓存示例.zip

    本示例主要涉及了三种常用的缓存管理工具:Redis、Guava Cache和Caffeine。让我们深入探讨这些技术及其在Spring Boot中的实现。 首先,Redis是一个开源的、基于网络的、支持多种数据结构(如字符串、哈希、列表、...

    Google Guava 官方教程

    Guava 支持函数式编程风格,包括 Function 接口,可以将一个对象转换为另一个对象,以及 Predicates,用于创建可重用的条件检查。 5. **字符串处理** Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于...

    google guava 中文教程

    Guava的Cache模块提供了一种高效的缓存解决方案,它支持自动加载、过期策略、大小限制等功能。开发者可以通过简单API实现数据的缓存,提高系统的响应速度,同时减少不必要的计算或数据库查询。 三、并发工具 Guava...

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

    本项目"spring-boot-redis-guava-caffeine-cache"主要探讨了如何在Spring Boot应用中集成Redis、Guava和Caffeine三种不同的缓存策略。 首先,Redis是一款开源的内存数据结构存储系统,常被用作数据库、缓存和消息...

    guava-18.0资料

    9. **缓存加载器**:Guava的LoadingCache接口允许开发者定义一个加载函数,当缓存中没有所需项时,自动从其他来源加载。 10. **事件监听**:Guava的 EventBus 让组件间通过发布和订阅事件进行通信,实现松耦合。 ...

    guava-r09-jarjar.jar

    2. **缓存**:Guava的Cache模块允许开发者创建本地缓存,可以自动管理缓存项的过期和大小限制。 3. **函数式编程**:Guava提供了Function接口和其他相关类,支持函数式编程风格,可以方便地进行操作转换。 4. **...

Global site tag (gtag.js) - Google Analytics