本地缓存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后再次取数据将不会从缓存中取,而是从数据源头拿数据并重新放入缓存

相关推荐
芊言芊语8 小时前
分布式缓存服务Redis版解析与配置方式
redis·分布式·缓存
攻城狮的梦9 小时前
redis集群模式连接
数据库·redis·缓存
无休居士12 小时前
【实践】应用访问Redis突然超时怎么处理?
数据库·redis·缓存
.Net Core 爱好者13 小时前
Redis实践之缓存:设置缓存过期策略
java·redis·缓存·c#·.net
M-bao13 小时前
缓存数据和数据库数据一致性问题
数据库·缓存
AntDreamer13 小时前
在实际开发中,如何根据项目需求调整 RecyclerView 的缓存策略?
android·java·缓存·面试·性能优化·kotlin
微刻时光17 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
丁总学Java18 小时前
如何使用 maxwell 同步到 redis?
数据库·redis·缓存
小菜yh19 小时前
关于Redis
java·数据库·spring boot·redis·spring·缓存
问道飞鱼19 小时前
分布式中间件-Pika一个高效的分布式缓存组件
分布式·缓存·中间件