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

springboot caffeine缓存配置

2023-12-31 11:59:32阅读 259

maven配置

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

配置文件

spring:
cache: type: caffeine

缓存配置类

@Slf4j
@Configuration
@EnableCaching
@EnableCaffeineHttpSession(maxInactiveIntervalInSeconds = 18000)
public class CacheConfig {
    private static final long MAX_INACTIVE_INTERVAL = 300 * 60 * 1000 * 1000L;

    @Bean
    public CacheManager cacheManager() {
        CaffeineCacheManager cacheManager = new CaffeineCacheManager();
        // 配置缓存及其过期时间
        cacheManager.setCaffeine(Caffeine.newBuilder()
                .expireAfter(new Expiry<>() {
                    @Override
                    public long expireAfterCreate(Object key, Object value, long currentTime) {
                        return getMaxInterval(key);
                    }

                    @Override
                    public long expireAfterUpdate(Object key, Object value, long currentTime, @NonNegative long currentDuration) {
                        return getMaxInterval(key);
                    }

                    @Override
                    public long expireAfterRead(Object key, Object value, long currentTime, @NonNegative long currentDuration) {
                        return currentDuration;
                    }

                    private long getMaxInterval(Object key) {
                        String[] keyStrs = key.toString().split("#");
                        return keyStrs.length > 1 ? Long.valueOf(keyStrs[1]) * 1000L : MAX_INACTIVE_INTERVAL;
                    }
                })
                .initialCapacity(100)
                .maximumSize(10_000));
        return cacheManager;
    }
}

时间单位是纳秒,所以 1s=1*1000*1000

使用,无自定义时间

@Cacheable(value = "recommend_articles", key = "#siteId.toString().concat('-').concat(#count.toString())")
    @Override
    public List<Article> listRecommendOrHotArticle(Long siteId, Integer count) {
        return baseMapper.listRecommendOrHotArticle(siteId, count);
    }

自定义时间(30s)

@Cacheable(value = "recommend_articles#30000", key = "#siteId.toString().concat('-').concat(#count.toString())")
    @Override
    public List<Article> listRecommendOrHotArticle(Long siteId, Integer count) {
        return baseMapper.listRecommendOrHotArticle(siteId, count);
    }

网站文章

  • springboot ehcache缓存配置

    maven配置 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&g...

    2023-12-31 11:49:15
  • k8s集成KubeSphere的第一个应用程序wordpress

    示例wordpress部署 这里使用project-regular权限账号进行登录,可以通过admin用户添加指定账号,然后创建空间demo-wordspace,并且创建demo-project项目 ...

    2023-12-31 11:00:44
  • k8s二进制快速集成KubeSphere

    一、KubeSphere 介绍 KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的...

    2023-12-31 10:48:21
  • 二进制部署kubernetes集群的推荐方式

    软件版本: 软件 版本 containerd v1.6.5 etcd v3.5.0 kubernetes v1.24.0 一、系统环境 1.1 环境准备 角色 IP 服务 k8s-master01 1...

    2023-12-31 00:43:12
  • 如何在一台服务器上安装etcd集群

    一、环境 角色 IP etcd-1 192.168.10.10 (12379、12380) etcd-2 192.168.10.10 (22379、22380) etcd-3 192.168.10.1...

    2023-12-31 00:21:23
  • containerd镜像构建

    实用buildkit构建 wget https://github.com/moby/buildkit/releases/download/v0.10.5/buildkit-v0.10.5.linux-...

    2023-12-30 23:55:46
  • containerd 二进制安装

    一、环境 系统:Centos7 二、进制安装 Release containerd 1.6.5 · containerd/containerd · GitHub github上面提供了带cri、cni...

    2023-12-30 23:48:54
  • crictl命令的基本使用

    [root@k8s-node02 k8s-install]# crictl --help NAME: crictl - client for CRI USAGE: crictl [glo...

    2023-12-29 17:51:00
  • ctr命令的基本使用与技巧

    k8s早1.24后放弃docker,并把containerd作为运行时组件,containerd 调用链更短,组件更少,更稳定,占用节点资源更少 ctr是containerd的一个客户端工具 cric...

    2023-12-29 17:32:48
  • Java线上问题排查攻略 - cpu使用、内存占用、网络、数据库连接等问题排查

    线上的问题在通常有一些预警,比如CPU被打满,网络达到顶峰等等问题。或者用户的反馈,比如某某页面打不开,系统加载很慢,一直提示报错等等。 应急操作: 1 记录问题发生的情况 包括服务器的情况,Java...

    2023-12-29 15:19:32