zoukankan      html  css  js  c++  java
  • 技术列传 guava cache

    技术列传 guava cache

    (2013-01-22 10:05:15)
    标签:

    it

    java

    cache

    分类: IT技术

    Guava cache是轻量级的内存缓存框架,相比于memcache来说适用场景各不相同,虽然用法相对于差不多,不过memcache更多的时候是维护一张内存中一张很大的hash表,基于分布式应用减少对数据库的很庞大的表耗性能操作,而这里要讲的guava cache多用于缓存经常读表的结果放在内存中,可以把表里经常读取的字段结果缓存,我们这里涉及的背景为:

    我们从第三方接口获取我们所需的信息,为了防止频繁的调用接口,我们将其结果缓存,为了程序的健壮性,防止当对方接口不可用时我们的程序崩溃掉,我们每过 段时间,就把缓存的结果存到数据库中去。又因为我们所需要的信息过段时间第三方就会更新,所以我们需要过期控制,缓存结果过期,就应该重新调用第三方接口 获取信息,不过幸好guava cache已有此机制帮我们实现了。

    具体代码详解如下:

    LoadingCache<Object, Object> cache = CacheBuilder.newBuilder()

    .maximumSize(this.getTotalNum())  //缓存队列最大长度

    .expireAfterAccess(this.getInterval(), TimeUnit.MILLISECONDS) //缓存时效

    .build(new CacheLoader<Object, Object>(){ //信息获取策略 当缓存队列没有或者过期移除了此结果,从第三方重新获取getKeyFromU为第三方方法

    @Override

    public String load(Object key) throws Exception{

    return getKeyFromU(key);

    }

    });

    Map<Object, Object> result = BaseCCMSKey.this.cache.asMap();

    把此map结果序列化进数据库就好了,当第三方接口报错,便可直接从数据库中读取了。

    更多操作比如手动刷新,删除,监听器,以及更多的缓存策略请查阅相关文档。

  • 相关阅读:
    功能测试-用例设计
    性能测试网址
    怎么调整磁盘分区的大小
    NIKKEI Programming Contest 2019-2 Task E. Non-triangular Triplets
    AtCoder Beginner Contest 131 Task F. Must Be Rectangular
    CF1244C The Football Season
    NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line
    常见组合计数问题汇总
    【B2B】01-BFS
    【C++】A trick I learned:put boilerplate code into constructor of a struct
  • 原文地址:https://www.cnblogs.com/adolfmc/p/2920796.html
Copyright © 2011-2022 走看看