首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

写入Guava LoadingCache是不是一种糟糕的做法?

写入Guava LoadingCache并不一定是一种糟糕的做法,它取决于具体的使用场景和需求。Guava LoadingCache是Guava库中提供的一种缓存实现,它可以自动加载缓存项,并在缓存项过期后自动刷新。

优势:

  1. 提高性能:Guava LoadingCache可以在缓存中存储计算结果,避免重复计算,从而提高系统性能。
  2. 自动加载和刷新:当缓存中不存在某个键对应的值时,LoadingCache会自动调用指定的加载函数进行加载,并将结果存入缓存。当缓存项过期时,LoadingCache可以自动刷新缓存项,确保缓存数据的及时更新。
  3. 线程安全:Guava LoadingCache提供了线程安全的访问机制,多个线程可以并发地访问缓存,而无需开发者手动处理线程同步问题。

应用场景:

  1. 数据库查询结果缓存:可以使用LoadingCache缓存数据库查询结果,提高查询性能。
  2. 外部API调用结果缓存:可以使用LoadingCache缓存外部API调用的结果,减少对外部API的频繁调用,提高系统响应速度。
  3. 计算结果缓存:可以使用LoadingCache缓存复杂计算的结果,避免重复计算,提高系统性能。

推荐的腾讯云相关产品:

腾讯云提供了多种云计算相关产品,以下是一些推荐的产品:

  1. 云缓存Redis:腾讯云的云缓存Redis是一种高性能、可扩展的内存数据库,可用于缓存数据,包括Guava LoadingCache的缓存数据。详情请参考:云缓存Redis
  2. 云数据库CDB:腾讯云的云数据库CDB是一种高性能、可扩展的关系型数据库,可用于存储和管理应用程序的数据。详情请参考:云数据库CDB
  3. 云函数SCF:腾讯云的云函数SCF是一种无服务器计算服务,可用于编写和运行无需管理服务器的代码。详情请参考:云函数SCF

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

caffe使用教程_单反使用入门教程

工具类,也被用于缓存底层数据结构,比如:这个类就是Guava cache基础。...我们知道Guava cache是基于LRU算法实现一种缓存工具,LRU算法缺点是短暂持续性冷数据流量会导致热数据淘汰,造成数据污染。...一些常用页面置换算法可参考文章《缓存算法》 适用场景 因为Caffeine cache是类似于Guava cache一种内存缓存,所以适合单机数据缓存;因为存储在内存,没有持久化,因此适合一些短期或者启动以及结果信息短暂缓存...二、使用 因为是基于Guava cache实现,因此二者API大体是类似的,使用Guava cache开发者可以很快熟练使用Caffeine cache。...expireAfterWrite():缓存写入后,一定时间失效;以写入缓存操作为准计时。 expireAfter():自定义缓存策略,满足多样化过期时间要求。

1.4K20

Guava,拯救垃圾代码,效率提升N倍

01、前世今生 你好呀,我是 Guava。 我由 Google 公司开源,目前在 GitHub 上已经有 39.9k 铁粉了,由此可以证明我受欢迎程度。...03、基本工具 Doug Lea,java.util.concurrent 包作者,曾说过一句话:“null 真糟糕”。...使用 Optional 除了赋予 null 语义,增加了可读性,最大优点在于它是一种傻瓜式防护。Optional 迫使你积极思考引用缺失情况,因为你必须显式地从 Optional 获取引用。...BiMap,一种特殊 Map,可以用 inverse() 反转BiMap 键值映射;保证值是唯一,因此 values() 返回 Set 而不是普通 Collection。...LoadingCache 就是缓存主要操作对象了,常用就是其中 put 和 get 方法了。

45820

Caffeine Cache 进程缓存之王

说起Guava Cache,很多人都不会陌生,它是Google Guava工具包中一个非常方便易用本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。...由于Guava大量使用,Guava Cache也得到了大量应用。但是,Guava Cache性能一定是最好吗?也许,曾经,它性能是非常不错。但所谓长江后浪推前浪,总会有更加优秀技术出现。...今天,我就来介绍一个比Guava Cache性能更高缓存框架:Caffeine。...这样可以避免与其他线程写入竞争,这也是为什么使用 get 优于 getIfPresent 原因。...基于大小(size-based) 基于大小驱逐,有两种方式:一种是基于缓存大小,一种是基于权重。

3.8K30

重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来

return CacheBuilder.newBuilder() .expireAfterAccess(30L, TimeUnit.MINUTES) .build(); } 是不是很方便...淘汰策略 具体说明 FIFO 根据缓存记录写入顺序,先写入先淘汰 LRU 根据访问顺序,淘汰最久没有访问记录 实际使用时候,同样是在创建缓存容器时候指定容量上限与淘汰策略,这样就可以放心大胆使用而不用担心内存溢出问题咯...实际使用时候,除了Callable方式,还有一种CacheLoader模式,也可以实现这一效果。...需要我们在创建缓存容器时候声明容器为LoadingCache类型(下面的章节中有介绍),并且指定CacheLoader处理逻辑: public LoadingCache createUserCache...图片 容器创建 —— CacheBuilder 具体使用前首先面临就是如何创建Guava Cache实例。可以借助CacheBuilder以一种优雅方式来构建出合乎我们诉求Cache实例。

1.2K40

Guava Cache用法介绍(极简版)

缘起 看了官方关于Guava Cache介绍,感觉太过于啰嗦,我个人是很不喜欢,看了好大半天也看不懂,直到翻到了一篇国内文章才看懂,特此记录,以备查阅。...如果缓存中不包含key对应记录,Guava会启动一个线程执行Callable对象中call方法,call方法返回值会作为key对应值被存储到缓存中,并且被get方法返回。...Guava可以保证当有多个线程同时访问Cache中一个key时,如果key对应记录不存在,Guava只会启动一个线程执行get方法中Callable参数对应任务加载数据存到缓存。...其中,expireAfterWrite方法指定对象被写入到缓存后多久过期,expireAfterAccess指定对象多久没有被访问后过期。...LoadingCache是Cache子接口,相比较于Cache,当从LoadingCache中读取一个指定key记录时,如果该记录不存在,则LoadingCache可以自动执行加载数据到缓存操作

3.9K20

Caffeine Cache 进程缓存之王

说起Guava Cache,很多人都不会陌生,它是Google Guava工具包中一个非常方便易用本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。...由于Guava大量使用,Guava Cache也得到了大量应用。但是,Guava Cache性能一定是最好吗?也许,曾经,它性能是非常不错。但所谓长江后浪推前浪,总会有更加优秀技术出现。...今天,我就来介绍一个比Guava Cache性能更高缓存框架:Caffeine。...这样可以避免与其他线程写入竞争,这也是为什么使用 get 优于 getIfPresent 原因。...基于大小(size-based) 基于大小驱逐,有两种方式:一种是基于缓存大小,一种是基于权重。

1.4K20

Google Guava,牛逼脚手架

01、前世今生 你好呀,我是 Guava。 1995 年时候,我“公明”哥哥——Java 出生了。经过 20 年发展,他已经成为世界上最流行编程语言了,请允许我有失公允把“之一”给去了。...02、引入 Guava 如果你要在 Maven 项目使用我的话,需要先在 pom.xml 文件中引入我依赖。...03、基本工具 Doug Lea,java.util.concurrent 包作者,曾说过一句话:“null 真糟糕”。...使用 Optional 除了赋予 null 语义,增加了可读性,最大优点在于它是一种傻瓜式防护。Optional 迫使你积极思考引用缺失情况,因为你必须显式地从 Optional 获取引用。...BiMap,一种特殊 Map,可以用 inverse() 反转BiMap 键值映射;保证值是唯一,因此 values() 返回 Set 而不是普通 Collection。

71920

解读JVM级别本地缓存Caffeine青出于蓝要诀 —— 缘何会更强、如何去上手

巨人肩膀上产物 先来回忆下之前创建一个Guava cache对象时代码逻辑: public LoadingCache createUserCache() { return...所以,从这个层面而言,本人更愿意将Caffeine看作是Guava Cache一种优秀基因传承与发扬光大,而非是竞争与打压关系。 那么Caffeine能够青出于蓝秘诀在哪呢?...淘汰算法W-LFU加持 常规缓存淘汰算法一般采用FIFO、LRU或者LFU,但是这些算法在实际缓存场景中都会存在一些弊端: 算法 弊端说明 FIFO 先进先出策略,属于一种最为简单与原始策略。...key列表对应值,返回查询到map格式结果, 异步场景不支持此方法 put 向缓存中写入指定key与value记录 putAll 批量向缓存中写入指定key-value记录集,异步场景不支持此方法...{ LoadingCache loadingCache = buildLoadingCache(); loadingCache.put("key1",

1.5K30

高性能本地缓存组件 Caffeine Cache

参考 Google Guava API对缓存框架重写,基于LRU算法实现,支持多种缓存过期策略。 Spring Boot 1.x版本中默认本地缓存是Guava Cache。...最后一次写入后,经过固定时间过期 refreshAfterWrite 写入后,经过固定时间过期,下次访问返回旧值并触发刷新 weakKeys 打开 key 弱引用 weakValues 打开 value...这样可以避免与其他线程写入竞争,这也是为什么使用 get 优于 getIfPresent 原因。...1、基于大小(size-based) 基于大小驱逐,有两种方式:一种是基于缓存大小,一种是基于权重。 使用Caffeine.maximumSize(long)方法来指定缓存最大容量。...expireAfterWrite(long, TimeUnit):在最后一次写入缓存后开始计时,在指定时间后过期。

1.2K20

Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍

最近在看一个同学代码时候,发现代码中大量使用了 Google 开源 Guava 核心库中内容,让代码简单清晰了不少,故学习分享出 Guava 中我认为最实用功能。...处理方式我们自然是一个 if( xx == null) 就能轻松解决。预期值判断也是类似,检查数据值是不是自己想要结果即可。 即使这么简单操作,我们是不是还经常出错呢?...Guava 提供,后面会详细介绍 Guava 中集合创建超多姿势。...是不是十分好用呢。而且可以在创建时直接扔进去几个元素,这个简直太赞了,再也不用一个个 add 了。 集合交集并集差集 过于简单,直接看代码和输出结果吧。...LoadingCache 就是缓存主要操作对象了,常用就是其中 put 和 get 方法了。

99930

Guava Cache 异步刷新技巧,你值得拥有!

Guava Cache是一款非常优秀本地缓存框架。 这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。...Redis 中;若 Redis 缓存不为空,则将缓存数据写入本地缓存中。...3、Guava 配置了 refresh 机制,每隔一段时间会调用自定义 LoadingCache 线程池(5个最大线程,5个核心线程)去导购服务同步数据到本地缓存和 Redis 中。...这说明了两个很重要点: 1、惰性加载仍然可能造成多台机器数据不一致; 2、LoadingCache 线程池数量配置不太合理, 导致了任务堆积。...2、适当调大 LoadingCache 线程池参数,并在线程池埋点,监控线程池使用情况,当线程繁忙时能发出告警,然后动态修改线程池参数。

24010

Java本地内存LoadingCache介绍

二、LoadingCache介绍 LoadingCache是大名鼎鼎GoogleGuava一个本地缓存接口(Guava是一个优秀类库,具体就不在这里介绍了,有兴趣同学可以自己百度下),定义如下...,V为缓存内容类型,如果我想以String为Key,缓存内容也是String,则这样声明: LoadingCache actCache; 来看看LoadingCache...具体使用 1、引入依赖 com.google.guava guava</artifactId...,然后每一项又是一个链表,这就是我们书中学到hash冲突拉链法; expireAfterWrite:写入多久之后过期,即被删除 maximumSize:缓存个数,注意这里是缓存多少个key,而不是缓存占用字节...三、设计分析 回到前面的几个问题,看Guava里是怎么解决; 1、数据存储结构 LoadingCache最终是LocalCache来实现,我们看下它结构: 它是用一个数组Segment<K

2K30

工具篇:介绍几个好用guava工具类

1前言 平时我们都会封装一些处理缓存或其他小工具。但每个人都封装一次,重复造轮子,有点费时间。有没有一些好工具库推荐-guava。...guava是谷歌基于java封装好开源库,它性能、实用性,比我们自己造轮子更好,毕竟谷歌出品,下面介绍下几个常用guava工具类 LoadingCache(本地缓存) Multimap 和 Multiset...>guava   27.0-jre 3LoadingCache LoadingCache 在实际场景中有着非常广泛使用...最大不同是 ConcurrentMap 会永久存储所有的元素值直到他们被显示移除,但是 LoadingCache 会为了保持内存使用合理会根据配置自动将过期值移除 通常情况下,Guava caching...File newFile = new File("D:/text.txt"); Files.write("this is a test".getBytes(), newFile); //再次写入会把之前内容冲掉

2K11

GuavaCache 简单入门

文章内容源于:https://github.com/google/guava/wiki/CachesExplained 这里只是自己简单看了一下,直接翻译 LoadingCache<Key, Graph...在某些情况下,LoadingCache是非常有用,由于它自动缓存加载机制,即使没有严格移除元素情况下。...如下所述,在写入期间以及在读取期间偶尔进行定期维护来执行定时到期。...由CacheBuilder构建缓存不会自动执行cleanup和驱逐值,或者在值到期后立即执行或者逐出任何类型。相反,在写入期间执行少量维护,或者在写入很少情况下偶尔执行读取操作。...相反,选择在你自己手中,如果缓存是高吞吐量,那么不必担心执行缓存维护以清理过期条目,如果缓存很少写入并且不希望清除阻止缓存读取,可能希望创建自己维护线程,定期调用Cache.cleanUp() 如果要为很少写入告诉缓存安排常规高速缓存维护

1.7K20

Guava Cache 使用小结

CacheLoader  load 方法可以理解为从数据源加载原始数据入口,当调用 LoadingCache  getUnchecked 或者 get方法时,Guava Cache 行为如下: 缓存未命中时...,便是我们没有简易有效手段阻止其无限增长,而 Guava Cache 可以通过初始化 LoadingCache 过程,配置 maximumSize ,以确保缓存内容不导致你系统出现 OOM。...Guava Cache 提供了expireAfterAccess、 expireAfterWrite 方案,为 LoadingCache缓存值设置过期时间。...一种情况,我会在数据要求敏感度不高场景使用缓存,所以短暂不一致可以忍受;另外一些情况,我会在设置定期刷新缓存以及手动刷新缓存机制。...总之非常灵活,使用 Guava Cache API 可以满足大多数业务场景缓存需求。 为什么是 Guava Cache,它性能怎么样?

98830
领券