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

Guava缓存expireAfterAccess问题

Guava缓存是Google开发的一个Java缓存库,它提供了一种方便的方式来实现缓存功能。expireAfterAccess是Guava缓存中的一个配置选项,用于设置缓存项在最后一次访问之后的一段时间内保持有效。

具体来说,expireAfterAccess表示缓存项在被访问后的一段时间内保持有效,如果在这段时间内没有再次访问该缓存项,它将被自动从缓存中移除。这个时间段可以通过expireAfterAccess方法的参数进行设置,单位可以是时间单位(如秒、分钟、小时等)。

expireAfterAccess的优势在于可以自动清理不再使用的缓存项,避免缓存中存储过多的无效数据,从而节省内存空间。它适用于那些需要在一段时间内保持缓存项有效,但随着时间的推移,这些缓存项可能会变得过时或不再需要的场景。

在实际应用中,expireAfterAccess可以用于各种场景,例如:

  1. 用户登录状态的缓存:可以将用户的登录状态缓存在Guava缓存中,并设置expireAfterAccess为一定的时间,这样可以在用户一段时间内没有操作后自动清除登录状态,提高系统的安全性和性能。
  2. 数据库查询结果的缓存:可以将数据库查询的结果缓存在Guava缓存中,并设置expireAfterAccess为一定的时间,这样可以在一段时间内重复查询相同的数据时直接从缓存中获取,减少数据库的访问压力。

推荐的腾讯云相关产品是腾讯云的分布式缓存服务TencentDB for Redis,它提供了高性能、高可靠性的缓存服务,支持设置expireAfterAccess等缓存策略。您可以通过以下链接了解更多关于TencentDB for Redis的信息:

https://cloud.tencent.com/product/trs

总结:Guava缓存的expireAfterAccess配置选项可以用于设置缓存项在最后一次访问之后的一段时间内保持有效,适用于需要在一段时间内保持缓存项有效的场景。腾讯云的TencentDB for Redis是一个推荐的缓存服务,可以满足这一需求。

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

相关·内容

Guava Cache缓存设计原理

Google开源的Java重用工具集库Guava里的一款缓存工具,实现的缓存功能: 自动将entry节点加载进缓存结构 当缓存的数据超过设置的最大值时,使用LRU算法移除 具备根据entry节点上次被访问或者写入时间计算它的过期机制...缓存的key被封装在WeakReference引用内 缓存的Value被封装在WeakReference或SoftReference引用内 统计缓存使用过程中命中率、异常率、未命中率等统计数据 Guava...writeQueue) ReferenceEntry可以是强引用类型的key,也可以WeakReference类型的key,为了减少内存使用量,还可以根据是否配置了expireAfterWrite、expireAfterAccess...,但如果长时间没有调用方法的话,会导致不能及时的清理释放内存空间的问题 evict主要处理四个Queue:1. keyReferenceQueue;2. valueReferenceQueue;3....: 从缓存中取key的值,如果该值已经缓存过了则返回缓存中的值,如果没有缓存过可以通过某个方法来获取这个值。

1K20

本地缓存高性能之王Caffeine

说起Guava Cache,很多人都不会陌生,它是Google Guava工具包中的一个非常方便易用的本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。...我们就来介绍一个比Guava Cache性能更高的缓存框架:Caffeine。...maximumSize: 缓存的最大数量 maximumWeight: 缓存的最大权重 expireAfterAccess: 最后一次读或写操作后经过指定时间过期 expireAfterWrite:...java金融 java金融 null expireAfterAccess 在最后一次读或者写入后开始计时,在指定的时间后过期。假如一直有请求访问该key,那么这个缓存将一直不会过期。...这里和expireAfterAccessexpireAfterAccess不同的是,需要你告诉缓存框架,他应该在具体的某个时间过期,获取具体的过期时间。

2.2K1619

Java本地缓存,完胜 Guava

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

31330

本地缓存组件 Guava cache 详解

如:put数据时,先插入DB,再删除原来的缓存;ge数据时,先查缓存,命中则返回,没有命中时,需要查询DB,再把查询结果放入缓存中 。如果访问量大,我们还得兼顾本地缓存的线程安全问题。...必要的时候也要考虑缓存的回收策略。 今天说的 Guava Cache 是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。...他很好的解决了上面提到的几个问题: 很好的封装了get、put操作,能够集成数据源 ; 线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素; Guava...可选配置分析 缓存的并发级别 Guava提供了设置并发级别的api,使得缓存支持并发的写入和读取。同 ConcurrentHashMap 类似Guava cache的并发也是通过分离锁实现。...基于存活时间的清除 expireAfterWrite 写缓存后多久过期 expireAfterAccess 读写缓存后多久过期 refreshAfterWrite 写入数据后多久过期,只阻塞当前数据加载线程

2.3K20

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

guava cache的缓存结构 常用的guava cache缓存 根据上图中的缓存框架,我们常用的一些缓存实例有:LocalManualCache和LocalLoadingCache,两者唯一的区别就是...// expireAfterWrite 缓存加载指定时间后,自动失效 // maximumSize 缓存数量超出指定数量后,加载新的缓存,会根据指定策略淘汰老的缓存 //...因此在load的时候,我们返回对象前必须处理null的问题。 Cache为什么不能返回null 先不说为什么不可以返回null,先假设cache可以接收null值。...不能通过get的valuenull,来判断加载的时机,只能通过containsKey来判断,如果通过valuenull作为是否加载缓存的标准,就会产生一个问题,如果缓存的是null,那么即使加载过一次,...; this.name = name; } public String getName(){ return this.name; } } 更多的guava

71950

Guava Cache -- Java 应用缓存神器

导语: Guava 作为Google开源Java 库中的精品成员,在性能、功能上都十分出色,本文将从实际使用的角度,来对Guava进行讲解 在使用Cache之前,首先要考虑两个问题: 1、应该在什么情况下使用它...3、在高并发情况下、能够正常缓存的更新以及返回。 带着这几个问题,来开始介绍Guava Cache这一趁手兵器。...2、缓存更新的策略: 根据时间 expireAfterWrite 缓存写入后多久过期。 expireAfterAccess 缓存读取后多久过期。...image.png ========================================================== 下面一起聊下使用缓存时会遇到的问题,以及Guava Cache...futureValue : fullyFailedFuture(t); } } Guava Cache 这种异步刷新缓存的方式是作者个人比较倾向的使用姿势,但是这里也有一个问题缓存不会主动刷新的

7.4K147

高并发利器-guava分流与缓存

guava依赖 com.google.guava guava...23.6-jre guava cache 高并发三件套之一,缓存 场景: 有个场景,接口请求获取数据频繁,但数据改动量小,一般情况是先去...是不是觉得挺麻烦的,这时候就用到guava cache了,guava封装看以上流程,只需直接调用get即可 GuavaCache提供了三种基本的缓存回收方式: 基于容量回收、定时回收和基于引用回收。...那么这个时候就会产生问题了,我们如何能控制好程序发送短信时的速度昵?于是限流器就得用上了。 2....提供服务接口的人或多或少遇到这样的问题,业务负载能力有限,为了防止过多请求涌入造成系统崩溃,如何进行流量控制? 流量控制策略有:分流,降级,限流等。

1.4K40

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

利用这类缓存足以解决大多数的性能问题了,我们也要知道,这种属于remote cache(分布式缓存),应用的进程和缓存的进程通常分布在不同的服务器上,不同进程之间通过RPC或HTTP的方式通信。...常用的本地缓存方案有:Guava CacheCaffeineEhCache基于Guava Cache实现本地缓存Guava是Google团队开源的一款 Java 核心增强库,包含集合、并发原语、缓存、IO...) //设置读写缓存后n秒钟过期,实际很少用到,类似于expireAfterWrite //.expireAfterAccess(17, TimeUnit.SECONDS...) //设置读写缓存后n秒钟过期,实际很少用到,类似于expireAfterWrite //.expireAfterAccess(17, TimeUnit.SECONDS...注意的这里的关键字进程,基于进程的缓存直觉告诉我们效率肯定要高一些,因为它直接在进程之内进行操作,但不同应用之间缓存的共享可能就会有问题

39210

Java本地缓存

如果不考虑高并发情况下的数据安全问题,可以选择HashMap。它是非线程安全的,但在单线程或低并发环境下性能较好。...如果需要考虑高并发情况下的数据安全问题,可以选择Hashtable或ConcurrentHashMap。Hashtable是线程安全的,但性能相对较差。...Guava Cache(也称为Guava缓存)是Google开源的一个Java库,用于实现本地缓存。它是Guava项目的一部分,是Google对Java集合框架的扩展和增强。...maximumSize 缓存的最大条数 maximumWeight 缓存的最大权重 expireAfterAccess 最后一次写入或访问后,经过固定时间过期 expireAfterWrite 最后一次写入后...立即失效方面,Guava会把立即失效 (例如:expireAfterAccess(0) and expireAfterWrite(0)) 转成设置最大Size为0。

27921

缓存 | 从本地缓存到分布式缓存, Guava, Caffeine, Memcached, Redis

、LinkedHashMap、TreeMap、LinkedTreeMap、ConcurrentHashMap… 总有一个满足你 这样实现很简单,但是也致命缺点:无法回收不常用的缓存 Guava Cache...说起 Guava, 很多人都不会陌生,它是 Google 提供的一个非常好用的 Java 工具包。...Guava Cache 是 Guava 中的一个本地缓存实现,基于LRU算法实现,并提供了多种缓存过期策略,过期时间、容量等....在本地缓存方面,SpringFramework5.0(SpringBoot2.0)放弃了Google的GuavaCache,选择了「Caffeine」(Drop Guava caching - superseded...注意事项 在使用缓存的过程中,我们还要注意缓存不一致、缓存穿透、缓存击穿与缓存雪崩等问题,每种问题都是不小的问题 这篇写的并不长,每种都是简单介绍了一下,马上分几篇分别介绍一下各自的具体使用方法,敬请期待

1.7K71
领券