前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Caffeine 咖啡因,JDK本地缓存

Caffeine 咖啡因,JDK本地缓存

作者头像
收心
发布2022-09-26 10:47:28
8160
发布2022-09-26 10:47:28
举报
文章被收录于专栏:Java实战博客

认识Caffeine 本地缓存

官网:https://github.com/ben-manes/caffeine/wiki/Home-zh-CN

Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。可以理解成一个高性能的Map结构,Caffeine提供了三种缓存驱逐策略

  • 基于容量:创建Caffeine对象时设置缓存数量的上香
  • 基于时间:创建Caffeine对象时设置缓存的有效期
  • 基于引用:设置缓存为软引用或弱引用,利用GC来回收。性能较差

注意:Caffeine设置的元素过期时,不是立马删除,是等下一次读写操作时或系统空闲时完成对数据的清理!

如果适应github的包,那看看这句话:For Java 11 or above, use 3.x otherwise use 2.x.

代码语言:javascript
复制
        <dependency>
            <groupId>top.javatool</groupId>
            <artifactId>canal-spring-boot-starter</artifactId>
            <version>1.2.1-RELEASE</version>
        </dependency>

试验:Caffeine的API通过先查缓存,缓存没有才查询DB

配置类

代码语言:javascript
复制
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.time.Duration;

@Configuration
public class CaffeineConfig {

    @Bean
    public Cache<String, String> 交由Spring管理Caffeine对象() {
        return Caffeine.newBuilder()
                .initialCapacity(100) // 设置初始化大小是100
                .maximumSize(10) // 设置缓存最多存储10个
                .expireAfterWrite(Duration.ofSeconds(60)) // 60秒后标记为可清除
                .build();
    }

}

操作代码:Caffeine的API通过先查缓存,缓存没有才查询DB

代码语言:javascript
复制
    @Autowired
    private Cache<String, String> cacheA;

    @Test
    public void Caffeine() {
        String name = cacheA.getIfPresent("name"); // 如果没有name则返回null
        cacheA.put("name", "张三");
        String newName = cacheA.getIfPresent("name"); // 如果没有name则返回null

        // 新用法,如果缓存没有,就会执行Lambda表达式的内容。
        String age = cacheA.get("age", key -> {
            // 模拟DB查询,然后插入数据
            String db_Data = "10";
            return db_Data; // return的数据,就被缓存了,同时返回此数据
        });
        System.out.println("Debug在这里,看一下变量name、newName、age");
    }

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!

收心永久会员

打赏 收藏 海报 链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 认识Caffeine 本地缓存
  • 试验:Caffeine的API通过先查缓存,缓存没有才查询DB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档