首页
学习
活动
专区
工具
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
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

真正的缓存之王,Google Guava 只是弟弟

前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。...这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。...HighScalability网站刊登了一篇文章,由前Google工程师发明的W-TinyLFU——一种现代的缓存 。Caffine Cache就是基于此算法而研发。...统计 与Guava Cache的统计一样。...在2.x( Spring Boot 2.0(spring 5) )版本中已经用Caffine Cache取代了Guava Cache。毕竟有了更优的缓存淘汰策略。

96730

Guava Cache缓存设计原理

Google开源的Java重用工具集库Guava里的一款缓存工具,实现的缓存功能: 自动将entry节点加载进缓存结构 当缓存的数据超过设置的最大值时,使用LRU算法移除 具备根据entry节点上次被访问或者写入时间计算它的过期机制...缓存的key被封装在WeakReference引用内 缓存的Value被封装在WeakReference或SoftReference引用内 统计缓存使用过程中命中率、异常率、未命中率等统计数据 Guava...Guava Cache数据结构图 ? ReferenceEntry是对一个键值对节点的抽象,它包含了key和值的ValueReference抽象类。...WriteQueue和AccessQueue 为了实现最近最少使用算法,Guava Cache在Segment中添加了两条链:write链(writeQueue)和access链(accessQueue...: 从缓存中取key的值,如果该值已经缓存过了则返回缓存中的值,如果没有缓存过可以通过某个方法来获取这个值。

99720

Guava 内存缓存的使用

一、概述 guava⽬前有三种刷新本地缓存的机制: expireAfterAccess:当缓存项在指定的时间段内没有被读或写就会被回收。...expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。-- 常用 refreshAfterWrite:当缓存项上一次更新操作之后的多久会被刷新。...-- 常用 二、原理 expireAfterWrite 为了避免缓存雪崩,guava 会限制只有一个加载操作时进行加锁,其他请求必须阻塞等待这个加载操作完成。...三、实践 首先了解⼀个机制,guava 不会⾃动清除清除数据,只有在访问时候再去判断 expire。...其实如果极端情况下,即新旧值基本不会变更的,直接采⽤ expireAfterWrite,⽽直接采⽤ refreshAfterWrite 来执⾏ load 也是可以的,性能会更优。

2.2K10

3. java缓存-线程内缓存guava cache

guava cache的缓存结构 常用的guava cache缓存 根据上图中的缓存框架,我们常用的一些缓存实例有:LocalManualCache和LocalLoadingCache,两者唯一的区别就是...// expireAfterWrite 缓存加载指定时间后,自动失效 // maximumSize 缓存数量超出指定数量后,加载新的缓存,会根据指定策略淘汰老的缓存 //...示例代码: import com.google.common.base.Optional; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader...; this.name = name; } public String getName(){ return this.name; } } 更多的guava...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

70450

Java本地缓存,完胜 Guava

在项目中用到的除了分布式缓存,还有本地缓存,例如:Guava、Encache,使用本地缓存能够很大程度上提升程序性能,本地缓存是直接从本地内存中读取,没有网络开销。...简介 Caffeine是基于Java8 的高性能缓存库,借鉴了 Guava 和 ConcurrentLinkedHashMap 的设计经验,拥有更高的缓存命中率和更快的读写速度。...性能比Guava更强 功能特性 基于时间的回收策略:包括写入时间和访问时间 基于容量的回收策略:一种是基于容量大小,一种是基于权重大小,两者只能取其一。....build(); } } 这种方式的弊端是所有的缓存都放在一起,最好的使用方式是每一个缓存单独创建缓存对象。...,无论读还是写的效率都远高于其他缓存,从 Spring5 开始的默认缓存实现就将 Caffeine 代替原来的Google Guava,支持多种回收策略,感兴趣的小伙伴赶快去试试吧~

30230

本地缓存组件 Guava cache 详解

必要的时候也要考虑缓存的回收策略。 今天说的 Guava Cache 是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。...CacheBuilder 是Guava 提供的一个快速构建缓存对象的工具类。...可选配置分析 缓存的并发级别 Guava提供了设置并发级别的api,使得缓存支持并发的写入和读取。同 ConcurrentHashMap 类似Guava cache的并发也是通过分离锁实现。...我们在构建缓存时可以为缓存设置一个合理大小初始容量,由于Guava缓存使用了分离锁的机制,扩容的代价非常昂贵。...如果缓存包含key对应的记录,Guava会启动一个线程执行Callable对象中的call方法,call方法的返回值会作为key对应的值被存储到缓存中,并且被get方法返回。

2.2K20

Guava Cache -- Java 应用缓存神器

导语: Guava 作为Google开源Java 库中的精品成员,在性能、功能上都十分出色,本文将从实际使用的角度,来对Guava进行讲解 在使用Cache之前,首先要考虑两个问题: 1、应该在什么情况下使用它...3、在高并发情况下、能够正常缓存的更新以及返回。 带着这几个问题,来开始介绍Guava Cache这一趁手兵器。...到这里,使用场景以及Guava Cache 的使用方法已经了解完了,还需要一个工具来验证缓存的效果。...Guava 提供了recordStats()方法,相当于启动了记录模式,通过Cache.stats()方法可以获取CacheStats对象,里面存储着缓存的使用情况,通过观察它就可以知道缓存的命中率,加载耗时等信息...因此记得在修改之前将缓存数据先深拷贝。 在上述Guava Cache的使用中,当缓存过期后,此时请求过来就会阻塞等待缓存的重新拉取。。。有没有可能避免掉这种阻塞?

7.4K147

Android Picasso缓存图片

Android Picasso缓存图片 问题描述:大多APP都有更换个人头像的功能,楼主在开发中遇到了当更换头像时,头像没有更换过来的问题,我用的是Picasso图片请求框架,而这些加载图片的框架一般都会有三级缓存策略...,当我们去加载一张图片的时候就会优先查找本地有没有,当一张图片已经加载过了之后就会缓存到本地,虽然我们更换了头像,但是图片的url没有变,所以再次加载的时候还是原来本地缓存的图片,而不是新的图片,所以我们在加载图片的时候可以设置不进行缓存即可...transform(new CircleTransform(mContext)).into(ivIcon); 其中.memoryPolicy(MemoryPolicy.NO_CACHE)这句的意思就是不进行缓存

1.5K10

Java本地缓存技术选型(Guava Cache、Caffeine、EhCache)

常用的本地缓存方案有:Guava CacheCaffeineEhCache基于Guava Cache实现本地缓存GuavaGoogle团队开源的一款 Java 核心增强库,包含集合、并发原语、缓存、IO...Guava Cache支持很多特性:支持最大容量限制支持两种过期删除策略(插入时间和访问时间)支持简单的统计功能基于LRU算法实现引入依赖 com.google.guava...并且在 Spring5 (Springboot 2.x) 后,Spring 官方放弃了 Guava,而使用了性能更优秀的 Caffeine 作为默认缓存组件。...同时两者的API类似,使用Guava Cache的代码很容易可以切换到Caffeine,节省迁移成本。EhCacheEhCache是一个纯Java的进程内缓存框架,具有快速、精干的特点。...从功能性角度,Guava Cache和Caffeine功能类似,都是只支持堆内缓存,Encache相比功能更为丰富从性能上进行比较,Caffeine最优、GuavaCache次之,EhCache最差(下图是三者的性能对比结果

21810

缓存缓存穿透、缓存雪崩、缓存击穿

原文:https://www.cnblogs.com/raichen/p/7750165.htm 缓存穿透 概念 缓存穿透是指查询一个一定不存在的数据,由于缓存命中时需要从数据库查询,查不到数据则不写入缓存...缓存雪崩 概念 大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。 解决办法 从业务层面。...可以给缓存设置过期时间时加上一个随机值时间,使得每个key的过期时间分布开来,不会集中在同一时刻失效。 缓存击穿(并发) 概念 高并发系统,如果一个缓存失效,存在多进程同时查询DB,同时更新缓存。...这对缓存和DB都是比较大的挑战。...解决办法 使用互斥锁(mutex key): 这种解决方案思路比较简单,就是只让一个线程构建缓存,其他线程等待构建缓存的线程执行完,重新从缓存获取数据就可以了(如下图) ?

2.4K20

初探Google Guava

Guava地址:https://github.com/google/guava 第一次接触我是在16年春github上,当时在找单机查缓存方法,google guava当初取名是因为JAVA的类库不好用...,所以谷歌工程师自己开发一套,想着google出品必属精品理念,我们一起来了解一下。...所以guava在程序性能优化上下了不少的工夫,我们称其为单块架构的利器 我认为强大的有几点:1.集合处理   2.EventBus消息总线处理  3.guava cache 单机缓存处理  4.并发listenableFutrue...缓存[Caches] Guava Cache:本地缓存实现,支持多种缓存过期策略 4. 函数式风格[Functional idioms] Guava的函数式支持可以显著简化代码,但请谨慎使用它 5....基于容量的回收: 规定缓存项的数目超过固定值,只需使用CacheBuilder.maximumSize(long)。缓存将尝试回收最近没有使用或总体上很少使用的缓存项。

1K20
领券