本地缓存LoadingCache

引入依赖

 
<dependency>
    <groupId>com.google.guavagroupId>
    <artifactId>guavaartifactId>
    <version>32.1.1-jreversion>
dependency>

主要代码

本地缓存LoadingCache_第1张图片

本地缓存LoadingCache_第2张图片

效果演示

第一次查询,数据没有放入缓存,查询耗时27574ms。查询完成后将数据放入缓存,缓存key是threadName-2
本地缓存LoadingCache_第3张图片
第二次查询,数据已经在缓存中数据瞬间被拿出来。缓存key是threadName-2
本地缓存LoadingCache_第4张图片
第一次查询name=threadName-3,缓存中没有key为threadName-3,耗时22120ms
本地缓存LoadingCache_第5张图片
第二次查询name=threadName-3,缓存有key为threadName-3,瞬间查出
本地缓存LoadingCache_第6张图片
总结:通过缓存key从本地缓存拿数据时如果缓存中有该key则直接从缓存中取出数据,如果缓存中没有该key则先获取数据并放入缓存中最后将数据返回。

本地缓存常用方法

maximumSize() 最多可放入缓存个数。
如果maximumSize=2,则只能放入两条数据也就是两个key。当我们先后存入key1,key2,key3,此时key1会被回收(移除)。
本地缓存LoadingCache_第7张图片
expireAfterWrite
数据写入后过期,即使有访问(读写)也会过期。如果过期时间是30s,30s后向缓存中写数据会触发removalListener。
expireAfterAccess
某一数据写入后,长时间没有写入或者读取会过期
本地缓存LoadingCache_第8张图片
refreshAfterWrite
数据写入缓存后,10s后再次取数据将不会从缓存中取,而是从数据源头拿数据并重新放入缓存
本地缓存LoadingCache_第9张图片

你可能感兴趣的:(缓存)