您现在的位置是:首页 > 正文

高性能本地缓存Caffeine和SpringBoot整合

2024-04-01 01:10:40阅读 2

简介

Caffeine是开源的高性能本地缓存库,本地缓存优势在于单机,缺点就是无法共享数据。适合做一级缓存,redis做二级缓存。

SpringBoot整合Caffeine

pom.xml 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>2.6.2</version>
</dependency>

caffeine配置类

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;

@Configuration
public class CaffeineConfig {

    /**
     * 设置缓存驱逐策略
     * @return
     */
    @Bean
    public Cache<Object, Object> user(){
        return Caffeine.newBuilder().recordStats()
            // 过期设置
            .expireAfterWrite(10, TimeUnit.SECONDS)
            // 容量大小限制(只能存两个)
            .maximumSize(2)
            .build();
    }
}

测试

@SpringBootTest
public class Test {

    @Data
    @AllArgsConstructor
    public static class User {
        private String name;
        private Integer age;
    }

    @Autowired
    private Cache<Object, Object> user;

    @org.junit.jupiter.api.Test
    public void test(){
        // 插入数据
        user.put("user1", new User("terry", 18));
        user.put("user2", new User("java", 28));
        // 读取数据
        System.out.println(user.asMap());
    }
}

打印输出:

{user1=Test.User(name=terry, age=18), user2=Test.User(name=java, age=28)}

网站文章

  • matlab试求出如下极限,2016年春季学期《MATLAB语言及应用》课程试题

    2016年春季学期《MATLAB 语言及应用》课程试卷(满分90分) 姓名: 学号:学院: 专业:注意:除概念题外,请都给出matlab 的输入语句以及计算结果。本试卷试题页打印,其余答题均需手写(图...

    2024-04-01 01:10:35
  • 必发365网站服务器在哪,www.lydongji.com

    Domain Name: LYDONGJI.COMRegistry Domain ID: 2374898277_DOMAIN_COM-VRSNRegistrar WHOIS Server: whois...

    2024-04-01 01:10:11
  • springboot启动不了也不报错的解决方案 热门推荐

    springboot启动不了也不报错的解决方案 热门推荐

    公司用的springboot,随着项目的不断庞大,经常会出现一些稀奇古怪的问题,其实多半是配置文件有问题,但是没有错误提示信息,就很是难受,无从下手,以下列举一些自己遇到的常见的问题处理办法: 案例1. 项目启动,控制台只打印了SPRING的日志,然后自动停止,如截图所示: 这种什么错误信息都没有,也是醉了,其实遇到这种情况,可以把启动方法try catch起来即可在控制台显示错误信息...

    2024-04-01 01:10:03
  • 单链表求交集

    (1)笨蛋方法,二重循环,暴力输出。 傻子才用。(2)聪明点的方法 先两个集合排序(升序),然后求交集。这里默认是升序。看代码吧#include<stdio.h>#include<...

    2024-04-01 01:09:57
  • Android jetpack总结

    Android jetpack总结

    背景 在Android开发中经常面临的问题: (1)在应用程序(Activity、Fragment)的生命周期管理困难,尤其是Fragment的跳转带来的生命周期管理问题。 (2)在Activity需...

    2024-04-01 01:09:50
  • BUUCTF CrackRTF

    BUUCTF CrackRTF

    这道题考察的知识点挺多挺杂的,对windows api的了解和掌握程度,对杂凑函数的熟悉程度,对文件打开关闭函数的掌握程度,当然,还有python写脚本的能力。是一道很经典的题。

    2024-04-01 01:09:26
  • 禁用Chrome的“请停用以开发者模式运行的扩展程序”提示。【已更新V80最新方法】

    禁用Chrome的“请停用以开发者模式运行的扩展程序”提示。【已更新V80最新方法】

    解决方法网上搜索了一圈,发现主要有3种方法:组策略法,运行批处理法,直接改dll文件法。第一种组策略的据说很早就失效了,我亲测了一下确实没用。另外一个批处理的方法据说也失效了,而且批处理权限太大没敢尝试运行。2019.12.19 解决老版本dll在79版本会引起崩溃方法有效的话点个赞让更多人看到吧在Chrome.exe文件夹下添加dll文件法(亲测如图)dll文件地址...

    2024-04-01 01:09:15
  • Python实现字符串模糊匹配

    Python实现字符串模糊匹配

    在一个字符串中,有时需对其中某些内容进行模糊匹配以实现条件的判定,如在“你好,hello,world”中判断是否含有“llo”。Python中通过re.search()方法实现,特别地,对于首位起始的内容匹配,也可通过re.match()方法实现。若匹配成功,它们返回一个re.Match对象;若匹配失败,返回None。

    2024-04-01 01:08:58
  • 换电脑需要装那些东西呢

    这里列出一个清单 phpstorm 2020.1及以上版本 navicate 12及以上版本 wamp 3.2及以上版本 #遇到问题 wamp apache 无法正常启动 进入到apache bin目...

    2024-04-01 01:08:30
  • windows server 2008 搭建DNS服务器

    windows server 2008 搭建DNS服务器

    文章目录windows server 搭建DNS服务器0. 环境声明1. 设置静态IP2. 安装DNS服务器3. 配置DNS服务器 windows server 搭建DNS服务器 0. 环境声明 本次...

    2024-04-01 01:08:23