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

相关推荐
m0_595199852 小时前
Redis(以Django为例,含具体操作步骤)
数据库·redis·缓存
huisheng_qaq13 小时前
【ElasticSearch实用篇-03】QueryDsl高阶用法以及缓存机制
elasticsearch·缓存·nosql·querydsl·score打分机制
卡拉叽里呱啦1 天前
缓存-变更事件捕捉、更新策略、本地缓存和热key问题
分布式·后端·缓存
jakeswang2 天前
应用缓存不止是Redis!——亿级流量系统架构设计系列
redis·分布式·后端·缓存
.Shu.2 天前
Redis zset 渐进式rehash 实现原理、触发条件、执行流程以及数据一致性保障机制【分步源码解析】
数据库·redis·缓存
Mi_Manchikkk2 天前
Java高级面试实战:Spring Boot微服务与Redis缓存整合案例解析
java·spring boot·redis·缓存·微服务·面试
柳贯一(逆流河版)2 天前
Spring 三级缓存:破解循环依赖的底层密码
java·spring·缓存·bean的循环依赖
如白驹过隙3 天前
cloudflare缓存配置
前端·缓存
海梨花3 天前
【从零开始学习Redis】项目实战-黑马点评D2
java·数据库·redis·后端·缓存
2301_793086874 天前
Redis 04 Reactor
数据库·redis·缓存