在SpringBoot中整合本地缓存Guava

文章介绍了如何在Java应用中使用GuavaCache进行缓存管理,包括在pom.xml中添加依赖,创建LoadingCache实例,配置缓存过期策略,并在Spring环境中使用@PostConstruct初始化缓存,以及通过CacheLoader的load方法加载缓存值。

1、在pom.xml中添加依赖

<dependency>
     <groupId>com.google.guava</groupId>
     <artifactId>guava</artifactId>
     <version>23.0</version>
</dependency>

2、demo

@Component
public class GuavaCache {

    public LoadingCache<String, String > cache = CacheBuilder.newBuilder()
            //设置缓存初始大小,应该合理设置,后续会扩容
            .initialCapacity(10)
            //最大值
            .maximumSize(100)
            //并发数设置
            .concurrencyLevel(5)
            //缓存过期时间,写入后100秒过期
            .expireAfterWrite(100, TimeUnit.SECONDS)
            // 此缓存对象经过多少秒没有被访问则过期。
            .expireAfterAccess(10, TimeUnit.SECONDS)
            //统计缓存命中率
            .recordStats()
            .build(new CacheLoader<String, String>() {
                @Override
                public String load(String key) throws Exception {
                    return "测试1:value:"+key;//当缓存中没有记录时,加载对应的值并返回
                }
            });




    @PostConstruct
    public void  init(){
        cache.put("2","李四");
    }

    public String get(String key) throws ExecutionException {
        return  cache.get(key);
    }
}

Controller类:

@RestController
@RequestMapping("/test")
public class TestController {
	@Resource
    private GuavaCache guavaCache;

    @RequestMapping("/hello")
    public String test(String name) throws ExecutionException {
        return guavaCache.get(name);
    }
}

3、测试

由于在init方法上加了@PostConstruct注解,在spring容器初始化时,会执行此方法,向cache中put(2,李四),当key没过期时get,会得到inti的值。
当key过期后,缓存中没有这个值,加载对应的值(load方法里的return)并返回
key未过期:
在这里插入图片描述
当缓存中的key过期后:
在这里插入图片描述

LoadingCache:当缓存中不存在某个key的值时,可以通过CacheLoader的load方法来加载该key对应的值,并将其加入到缓存中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值