首页 > 其他分享 >SpringBoot 整合 Caffeine

SpringBoot 整合 Caffeine

时间:2023-10-19 19:07:48浏览次数:35  
标签:缓存 SpringBoot caffeineCache caffeine Caffeine newBuilder 整合 com

1 Maven 依赖

引入pom依赖:

<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>3.1.6</version>
</dependency>

或者直接观察当前 SpringBoot 自带版本:

image-20231019154732645

2.2 基本用法

import com.github.benmanes.caffeine.cache.Caffeine;

public class CaffeineExample {

    public static void main(String[] args) {
        // 创建一个缓存实例
        Caffeine<String, String> caffeineCache = Caffeine.newBuilder().build();

        // 向缓存中放入数据
        caffeineCache.put("公众号", "JavaEdge");

        // 从缓存中获取数据
        String value = caffeineCache.getIfPresent("公众号");
        System.out.println("Value for 公众号: " + value);
    }
}

3 高级用法

3.1 自定义缓存策略

通过expireAfterWriteexpireAfterAccess等方法自定义缓存项的过期策略。

Caffeine<String, String> caffeineCache = Caffeine.newBuilder()
        .expireAfterWrite(10, TimeUnit.MINUTES)
        .build();

3.2 异步加载

Caffeine<String, CompletableFuture<String>> caffeineCache = Caffeine.newBuilder()
        .buildAsync(key -> CompletableFuture.supplyAsync(() -> loadDataFromDatabase(key)));

4 性能调优

根据实际需求进行配置,例如缓存的最大大小、刷新策略。

Caffeine<String, String> caffeineCache = Caffeine.newBuilder()
        .maximumSize(1000)
        .recordStats() // 启用统计信息
        .build();

5 总结

参考

  • 官方文档
  • https://github.com/ben-manes/caffeine/wiki/Roadmap-zh-CN
  • https://github.com/ben-manes/caffeine

标签:缓存,SpringBoot,caffeineCache,caffeine,Caffeine,newBuilder,整合,com
From: https://blog.51cto.com/JavaEdge/7941720

相关文章

  • SpringBoot3.0 + RocketMq 构建企业级数据中台[内附资料]
    点击下载:SpringBoot3.0+RocketMq构建企业级数据中台[内附资料]  提取码:3cnfSpringBoot3.0是SpringBoot框架的最新版本,它提供了愈加简单、快速和高效的方式来构建企业级应用程序。RocketMq是一款高性能的音讯中间件,能够完成散布式音讯传送和处置。将SpringBoot3.0和Rocket......
  • springboot mybatis-plus 逆向工程
    官网地址:https://baomidou.com/开发环境Springbootv3.1.4mybatis-plusv3.5.3.2mybatis-plus-boot-startermybatis-plus-generatorApacheFreeMarkerv2.3.32mysql  ......
  • SpringBoot: 手动注册bean的另一种方法@Import
    packagecn.edu.tju.config;importcn.edu.tju.domain.Car;importorg.springframework.beans.factory.support.BeanDefinitionRegistry;importorg.springframework.beans.factory.support.BeanNameGenerator;importorg.springframework.beans.factory.support.RootBea......
  • SpringBoot:手动注册bean
    packagecn.edu.tju.config;importcn.edu.tju.domain.Car;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.config.ConfigurableListableBeanFactory;importorg.springframework.beans.factory.support.BeanDefinitionRegi......
  • SaaS云平台 springboot智慧校园管理平台源码
    智慧校园以互联网为基础,以“大数据+云服务”为核心,融合校园教学、管理、生活软硬件平台,定义智慧校园新生活。智慧校园管理平台管理者、教师、学生、家长提供一站式智慧校园解决方案,实现校园管理智能化.校园生活一体化、校园设施数字化、课堂教学生动化、家校沟通无缝化。系统架构:Ja......
  • 若依springboot 使用MultipartFile 为空
    解决:接口请求参数需要加个入参:@RequestParam("file")代码: postman ......
  • 实现Springboot中MyBatisplus使用分页“@P0”附近有语法错误selectPage, IPage和Page分
    说明:QueryWrapper<Banner> warapper=newQueryWrapper<>();Page<Banner>page=newPage<>(1,1);IPage<Banner>iPage=bannerMapper.selectPage(page,warapper);输出结果还是全部的,没有limit效果。 解决:查了一天发现网上有说,没有进行配置分页插件,加上这个分页插件配置类......
  • SpringBoot项目中使用mybatis逆向工程
    mybatis逆向工程,即利用现有的数据表结构,生成对应的model实体类、dao层接口,以及对应的mapper.xml映射文件。借助mybatis逆向工程,我们无需手动去创建这些文件。下面是使用Java代码的方式来实现逆向工程,生成文件(也可以使用插件来生成):首先,导入需要的依赖包:mybatis逆向工程的依赖和......
  • Swagger系列:SpringBoot3.x中使用Knife4j
    目录一、简介二、版本说明三、使用四、效果图一、简介官网:https://doc.xiaominfo.com/Knife4j是一个集Swagger2和OpenAPI3为一体的增强解决方案Knife4j是为JavaMVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,致力于springfox-swagger......
  • 23.10.18(常用Java异常处理情况整合)
    在JAVA项目中,异常处理是一项非常重要的任务。合理处理异常能够提高程序的稳定性和可靠性,保证程序的正常运行。下面是关于JAVA项目中常用的异常处理情况的总结:1.空指针异常(NullPointerException):在使用一个空对象的成员变量或方法时会抛出该异常。可以通过判断对象是否为空来避免......