java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot整合Caffeine

SpringBoot整合Caffeine使用示例

作者:谢林v

Spring Boot 和 Caffeine 可以很容易地进行整合,Caffeine 是一个现代化的 Java 缓存库,提供了高性能和灵活的缓存策略,本文给大家介绍了SpringBoot整合Caffeine使用示例,需要的朋友可以参考下

简单介绍

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @Cacheable(cacheNames = "myCache", key = "#id")
    public String getExpensiveDataById(Integer id) {
        // 模拟耗时操作
        return "Some expensive data for id: " + id;
    }
}

getExpensiveDataById方法的结果将根据传入的id被缓存。如果同样的id再次请求,将直接从缓存中获取结果,而不会执行方法体中的耗时操作。

cacheNames属性定义了缓存的逻辑名称,它是一个字符串。在Spring的缓存框架中,这个名称被用来唯一标识一个缓存区域。

缓存区域是底层缓存存储中的一部分,可以把它想象成一个命名的存储空间,其中可以存放多个键值对。每个缓存名称对应一个缓存区域。

缓存区域内部以键值对的形式存储数据。每个键值对包含一个键(key)和相应的值(value)。

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @CacheEvict(cacheNames = "myCache", allEntries = true)
    public void clearMyCache() {
        // 清除名为myCache的缓存中的所有项
    }
}

示例

新建一个Spring项目。Caffeine已经作为默认的缓存库被包含在Spring Boot的依赖中,所以通常不需要显式添加Caffeine的依赖。

配置相关属性

# application.properties 示例
spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=30m

Controller

@RestController
@Slf4j
public class MyController {
    @Resource
    private MyService myService;

    @GetMapping("/cache")
    public String cache() {
        log.info("收到了增加缓存请求");
        return myService.getExpensiveDataById(1);
    }
    @GetMapping("/cache/del")
    public void delCache() {
        log.info("收到了删除缓存请求");
        myService.deleteExpensiveDataById(1);
    }
}

Service

@Service
@Slf4j
public class MyService {

    @Cacheable(cacheNames = "myCache", key = "#id")
    public String getExpensiveDataById(Integer id) {
        // 模拟耗时操作
        log.info("执行了操作");
        return "Some expensive data for id: " + id;
    }

    @CacheEvict(cacheNames = "myCache", key = "#id")
    public void deleteExpensiveDataById(Integer id) {
        // 模拟删除操作
        log.info("执行了删除操作");
    }

}

测试步骤

1. 运行项目,打开浏览器,输入请求地址localhost:8080/cache,看到日志输出如下:

2. 刷新地址,发现日志输出如下:

3. 说明这次请求走了缓存 3. 输入请求地址localhost:8080/cache/del,日志输出如下

4. 再次请求地址lcoalhost:8080/cache,日志输出如下

说明上一次的删除缓存已经起效果。

到此这篇关于SpringBoot整合Caffeine使用示例的文章就介绍到这了,更多相关SpringBoot整合Caffeine内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文