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

Guava总结4-Cache

 
阅读更多

官方文档 https://code.google.com/p/guava-libraries/wiki/CachesExplained 

LoadingCache

这种用法,我个人用的比较多.不多说,直接看代码(例子来自官方文档).

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
       .maximumSize(1000) //最多1000个
       .expireAfterWrite(10, TimeUnit.MINUTES)//写入以后缓存10min.
       .removalListener(MY_LISTENER)//listenner设置
       .build(
           new CacheLoader<Key, Graph>() {
            //最后load的方法.
             public Graph load(Key key) throws AnyException {
               return createExpensiveGraph(key);
             }
           });

 上面的代码很容易理解..在使用的时候,就非常简单了.只需要 

 

graphs.getUnchecked(key)

 还是很简单的.

但是这里有一个要求,load的返回值不允许为null..但是我们很多业务场景经常会遇到null的返回值.解决的方法就是通过optional .具体看实际的代码

/**
     * 抽奖ID对应的抽奖信息cache
     */
    private LoadingCache<Long,Optional<LotteryAwardMO>> idLotteryAwardCache;
private void init() {
        idLotteryAwardCache = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(5, TimeUnit.SECONDS).build(new CacheLoader<Long, Optional<LotteryAwardMO>>() {
            @Override
            public Optional<LotteryAwardMO> load(Long key) throws Exception {
                LotteryAwardMsgBO lotteryAwardMsgBO = lotteryAwardMsgManager.get(key);
                return Optional.fromNullable(toLotteryAwardMO(lotteryAwardMsgBO));
            }
        });
    }

 用法也很简单

idLotteryAwardCache.getUnchecked(awardId).orNull()

 

CallBack

callback的用法,等我在实际中用到了,再写吧

分享到:
评论

相关推荐

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

    总结来说,`Guava-Cache-Demo` 展示了如何利用 Guava Cache 实现高效的数据缓存,通过将 Google Books API 的调用结果缓存起来,减少了不必要的网络延迟,提高了应用程序的响应速度。通过定制缓存的过期策略、最大...

    mahout的guava-r09-jar

    2. **缓存机制**:Guava的LoadingCache接口可以方便地创建自定义缓存策略,这对于频繁访问的数据,可以减少重复计算和提高响应速度。 3. **并发工具**:Guava提供了如CountDownLatch、CyclicBarrier等并发控制工具...

    Google-Guava-Collections-使用介绍

    LoadingCache, String&gt; cache = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .build(new CacheLoader, String&gt;() { public String load(String key) throws ...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习...├─Google Guava 第34讲-Guava Cache之RecordStats,CacheBuilderSpec详解.wmv

    spring-cache-4.2.xsd.zip

    总结来说,"spring-cache-4.2.xsd.zip"压缩包包含的关键知识点是Spring Cache的XML Schema定义,它对于理解和配置Spring Cache至关重要。这个压缩包提供了一种离线方式来查看和使用Schema文件,有利于提高开发效率,...

    Guava-CacheDemo.rar

    Guava Cache是Google Guava库中的一...总结,Guava Cache是一个强大的本地缓存解决方案,提供了丰富的配置选项和便捷的操作接口。通过学习和熟练使用Guava Cache,开发者可以更好地优化应用程序的性能,提升用户体验。

    springbt_guava_cache.7z

    总结,Spring Boot结合Guava Cache能有效提升Web应用的性能,通过合理配置和策略优化,可以应对各种复杂场景。在实际开发中,我们需要根据业务需求,灵活运用这些工具和技巧,构建出高效、稳定的缓存系统。

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

    总结,Guava Cache是Java开发中实现本地缓存的一个强大工具,它的灵活性和丰富的特性使得缓存管理变得高效且易于维护。在实际项目中,合理地利用Guava Cache,可以显著提升系统性能,减少不必要的I/O操作。同时,...

    scala-partest_2.11.0-M4-1.0-RC1.zip

    然而,当我们关注"guava-cache-overflow-extension.zip"时,话题转向了Google的Guava库,这是一个广泛使用的Java库,提供了许多实用工具类和集合框架的增强。在这个压缩包中,我们找到了一个开源项目,名为“Guava ...

    google-guava.jar

    Guava的Cache模块提供了一种高效的本地缓存实现,可以自动管理缓存项的过期和容量限制。开发者可以通过简单的方法调用实现缓存的创建、加载和淘汰策略,大大提高了应用的性能。 三、并发编程支持 Guava提供了许多...

    Getting start with guava

    这里可以利用Guava提供的`LoadingCache`来实现: ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import ...

    Google的guava实战

    总结来看,Guava库通过提供各种实用工具类和接口,极大地丰富了Java语言的功能,使得Java开发者能够更专注于业务逻辑的实现,而不是重复造轮子。因此,对于Java开发者而言,掌握Guava库的使用是一项非常有价值的技能...

    AutoLoadCache是基于AOPAnnotation等技术实现的高效的缓存管理解决方案

    相比于其他的Java缓存库,如Ehcache、Guava Cache,AutoLoadCache更专注于简化开发者的工作,提供更丰富的特性以适应复杂的应用场景。尽管如此,选择哪种缓存库取决于具体项目的需求,例如对内存使用、分布式支持、...

    Guava Source Code 22.0

    Guava的Cache提供了内存管理和数据缓存的解决方案,支持过期策略、最大容量限制等功能。此外,Guava的Persister接口允许开发者自定义数据持久化策略,方便在内存和持久存储间切换。 总结起来,Guava 22.0是一个功能...

    相关总结-缓存-20181007.rar

    而工具部分可能涉及使用缓存的软件或库,如Java的Guava Cache、Spring Cache等,以及如何配置和优化它们。 压缩包内的“缓存.docx”文件很可能是对缓存技术的详细讲解,可能包含以下知识点: 1. **缓存的基本概念*...

    spring-cache:Spring Redis缓存示例

    它提供了一种统一的方式来管理和使用各种缓存系统,如EhCache、Hazelcast、Guava和Redis等。在这个示例中,我们将专注于Spring与Redis集成进行缓存管理。 **Spring Cache的原理** Spring Cache的核心是通过`@...

    J2Cache-master.zip

    8. **可扩展性**:J2Cache允许用户自定义缓存实现,如基于Guava Cache、Ehcache、 Hazelcast等,以满足特定需求。 9. **并发控制**:通过线程安全的设计,保证了在多线程环境下的正确性和一致性。 10. **序列化**...

    spring cache demo

    为了指定缓存的存储介质,Spring Cache 支持多种缓存 provider,如 Ehcache、Guava Cache、JCache (JSR-107) 等。在配置类中,我们可以通过 `CacheManager` 的实现类来选择和配置缓存 provider。 例如,如果我们...

    java cache 简单应用

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

    GuavaDemo:使用Guava库的演示

    Guava的LoadingCache是强大的缓存实现,支持自动加载、过期策略和大小限制。它可以极大地提高应用程序的响应速度,减少对底层资源的访问。 **I/O工具** Guava提供了Files、ByteStreams、CharStreams和Charsets等...

Global site tag (gtag.js) - Google Analytics