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

相关推荐
努力发光的程序员2 小时前
互联网大厂Java面试:从Spring Boot到微服务架构
spring boot·缓存·微服务·消息队列·rabbitmq·spring security·安全框架
zero13_小葵司2 小时前
JavaScript性能优化系列(八)弱网环境体验优化 - 8.3 数据预加载与缓存:提前缓存关键数据
javascript·缓存·性能优化
CS_浮鱼4 小时前
【Linux进阶】mmap实战:文件映射、进程通信与LRU缓存
linux·运维·c++·缓存
q***31837 小时前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存
梁bk9 小时前
Redis 多级缓存架构学习笔记
redis·缓存·架构
q***816413 小时前
【Redis】centos7 systemctl 启动 Redis 失败
数据库·redis·缓存
敲上瘾16 小时前
Docker镜像构建优化指南:CMD/ENTRYPOINT、多阶段构建与缓存优化
运维·缓存·docker·容器·架构
m***56721 天前
Win10下安装 Redis
数据库·redis·缓存
闲人编程1 天前
Python的导入系统:模块查找、加载和缓存机制
java·python·缓存·加载器·codecapsule·查找器
-Xie-1 天前
Redsi(十)——缓存双写
缓存