当前位置: 首页 > 工具软件 > xRedis > 使用案例 >

Springboot 2.x Redis Session 自定义key value序列化方式

扈高逸
2023-12-01

Redis习惯使用 Json格式来存储了,spring-session 2.0 开始网上找的方法已经都不适用了,文档里也没说清楚,通过分析源码最后解决。

这里简单介绍一下我的解决方法

1、pom依赖

 

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

2、配置yml

 

server:
  port: 8080
  servlet:
    session:
      timeout: 1d
spring:
  session:
    store-type: redis
    redis:
      flush-mode: on_save
      namespace: session
  redis:
      port: 6379
      host: ip
      password: pwd
      database: 1
      timeout: 1s
      lettuce:
        pool:
          max-active: 8
          max-idle: 8
          min-idle: 0
          max-wait: -1ms

3、自定义SessionConfiguration 类

 

import lombok.extern.log4j.Log4j2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

@Log4j2
@Configuration
public class SessionConfiguration {

    @Bean("springSessionDefaultRedisSerializer")
    public RedisSerializer<Object> defaultRedisSerializer(){
        log.debug("自定义Redis Session序列化加载成功");
        return valueSerializer();
    }

    private RedisSerializer<Object> valueSerializer() {
        return new GenericJackson2JsonRedisSerializer();
    }

}

 

 类似资料: