本地缓存LoadingCache

引入依赖

xml 复制代码
 <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>32.1.1-jre</version>
</dependency>

主要代码

效果演示

第一次查询,数据没有放入缓存,查询耗时27574ms。查询完成后将数据放入缓存,缓存key是threadName-2

第二次查询,数据已经在缓存中数据瞬间被拿出来。缓存key是threadName-2

第一次查询name=threadName-3,缓存中没有key为threadName-3,耗时22120ms

第二次查询name=threadName-3,缓存有key为threadName-3,瞬间查出

总结:通过缓存key从本地缓存拿数据时如果缓存中有该key则直接从缓存中取出数据,如果缓存中没有该key则先获取数据并放入缓存中最后将数据返回。

本地缓存常用方法

maximumSize() 最多可放入缓存个数。

如果maximumSize=2,则只能放入两条数据也就是两个key。当我们先后存入key1,key2,key3,此时key1会被回收(移除)。

expireAfterWrite

数据写入后过期,即使有访问(读写)也会过期。如果过期时间是30s,30s后向缓存中写数据会触发removalListener。
expireAfterAccess

某一数据写入后,长时间没有写入或者读取会过期

refreshAfterWrite

数据写入缓存后,10s后再次取数据将不会从缓存中取,而是从数据源头拿数据并重新放入缓存

相关推荐
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.12 小时前
《redis-cluster 集群部署完全手册(含扩容+缩容)》
数据库·redis·缓存
八秒记忆的老男孩17 小时前
Sentinel5P的L1B级数据预处理(BD7和BD8)【20260427】
数据库·redis·缓存
snow@li19 小时前
数据库-Oracle:常用语法 / Oracle 核心知识技能梳理
数据库·redis·缓存
星辰_mya20 小时前
系统里的“特种部队”——缓存
缓存
snow@li20 小时前
数据库-Redis:常用语法 / Redis 核心知识技能梳理
数据库·redis·缓存
fuquxiaoguang21 小时前
金蝶天燕AMDC:当企业级缓存遇见Redis 8.2,国产中间件的“性能+易用”双飞跃
redis·缓存·中间件
AI木马人1 天前
9.【AI任务队列实战】如何在高并发下保证系统不崩?(Redis + Celery完整方案)
数据库·人工智能·redis·神经网络·缓存
CyrusCJA2 天前
在Windows系统上将Redis注册为系统服务使其实现开机自启
数据库·windows·redis·缓存
逆境不可逃2 天前
一篇速通Redis 从原理到Java实战(含缓存问题解决方案+集群配置)
数据库·redis·缓存