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

Google Guava缓存不缓存

Google Guava是一个开源的Java库,提供了许多实用的工具类和函数,其中包括了缓存功能。Guava缓存是一个内存缓存框架,用于提高应用程序的性能和响应速度。

Guava缓存的特点包括:

  1. 自动加载:当缓存中不存在所需的数据时,Guava缓存会自动加载数据并将其存储在缓存中,以便下次使用。
  2. 自动过期:可以为缓存中的每个条目设置过期时间,一旦过期,缓存会自动删除该条目。
  3. 缓存回收策略:Guava缓存提供了多种缓存回收策略,如基于大小、基于权重和基于时间等。
  4. 弱引用:Guava缓存可以使用弱引用来存储缓存条目,当内存不足时,垃圾回收器会自动回收这些条目。
  5. 统计信息:Guava缓存提供了统计信息,可以获取缓存的命中率、加载次数、平均加载时间等。

Guava缓存适用于以下场景:

  1. 数据库或网络请求的结果缓存:可以将经常访问的数据缓存起来,减少数据库或网络请求的次数,提高系统的响应速度。
  2. 计算结果缓存:可以将计算结果缓存起来,避免重复计算,提高计算性能。
  3. 频繁访问的数据缓存:可以将频繁访问的数据缓存起来,减少对底层数据源的访问次数,提高系统的响应速度。

推荐的腾讯云相关产品:腾讯云Memcached、腾讯云Redis

  • 腾讯云Memcached:基于内存的分布式缓存服务,提供高速、低延迟的缓存能力。详情请参考:腾讯云Memcached
  • 腾讯云Redis:基于内存的高性能键值存储服务,支持多种数据结构和丰富的功能。详情请参考:腾讯云Redis
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试官:本地缓存怎么选型?问倒一大片!

图片(2)ConcurrentHashMap 优化 Caffeine 底层都是通过 ConcurrentHashMap 来进行数据的存储,因此随着 Java8 中对 ConcurrentHashMap 的调整,数组 + 链表的结构升级为数组 + 链表 + 红黑树的结构以及分段锁升级为 syschronized+CAS,降低了锁的粒度,减少了锁的竞争,这两个优化显著提高了 Caffeine 在读多写少场景下的查询性能。 (3)新型淘汰算法 W-TinyLFU 传统的淘汰算法,如 LRU、LFU、FIFO,在实际的缓存场景中都存在一些弊端,如 FIFO 算法,如果缓存使用的频率较高,那么缓存数据会一直处在进进出出的状态,间接影响到缓存命中率。LRU 算法,在批量刷新缓存数据的场景下,可能会将其他缓存数据淘汰掉,从而带来缓存击穿的风险。LFU 算法,需要保存缓存记录的访问次数,带来内存空间的损耗。 因此,Caffeine 引入了 W-TinyLFU 算法,由窗口缓存、过滤器、主缓存组成。缓存数据刚进入时会停留在窗口缓存中,这个部分只占总缓存的 1%,当被挤出窗口缓存时,会在过滤器汇总和主缓存中淘汰的数据进行比较,如果频率更高,则进入主缓存,否则就被淘汰,主缓存被分为淘汰段和保护段,两段都是 LRU 算法,第一次被访问的元素会进入淘汰段,第二次被访问会进入保护段,保护段中被淘汰的元素会进入淘汰段,这种算法实现了高命中率和低内存占用。

01
领券