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

springboot springsession 结合caffeine

2023-12-31 12:04:47阅读 260

maven配置

        <dependency>
            <groupId>com.github.gotson</groupId>
            <artifactId>spring-session-caffeine</artifactId>
            <version>2.0.0</version>
        </dependency>
        <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;
    }
@Bean public DefaultCookieSerializer cookieSerializer() { DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer() { @Override public void writeCookieValue(CookieValue cookieValue) { //host2 主要是未备案域名的访问提供支持 String currentDomain = cookieValue.getRequest().getHeader("host"); if (StringUtils.isBlank(currentDomain)) { // 获取当前请求的域名 currentDomain = cookieValue.getRequest().getServerName(); } String[] domains = currentDomain.split("\\."); if (domains.length == 3) { currentDomain = String.format("%s.%s", domains[1], domains[2]); } // 根据请求的域名设置 Cookie 的域名 setDomainName(currentDomain); super.writeCookieValue(cookieValue); } }; cookieSerializer.setCookiePath("/"); return cookieSerializer; }
}

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

 

网站文章

  • springboot caffeine缓存配置

    maven配置 &lt;dependency&gt; &lt;groupId&gt;com.github.ben-manes.caffeine&lt;/grou...

    2023-12-31 11:59:32
  • 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