Springboot2.x以上使用SpringSession进行redis共享session

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>        
RedisConfiguration
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;


@Configuration
public class RedisConfiguration {
    @Bean(name = "pool")
    protected JedisPool jedisPool(JedisPoolConfig jedisPoolConfig,
                                  @Value("${spring.redis.host}") String host,
                                  @Value("${spring.redis.port}") int port,
                                  @Value("${spring.redis.password}") String password,
                                  @Value("${spring.redis.database}") int database) {
        return new JedisPool(jedisPoolConfig, host, port, 15000, password, database);
    }
    
    @Bean
    public JedisPoolConfig jedisPoolConfig(@Value("${spring.redis.config.maxTotal}") int maxTotal,
                                           @Value("${spring.redis.config.maxIdle}") int maxIdle,
                                           @Value("${spring.redis.config.maxWaitMillis}") int maxWaitMillis) {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(maxTotal);
        config.setMaxIdle(maxIdle);
        config.setMaxWaitMillis(maxWaitMillis);
        config.setMinEvictableIdleTimeMillis(300000);
        config.setNumTestsPerEvictionRun(3);
        config.setTimeBetweenEvictionRunsMillis(60000);
        return config;
    }
}
SessionConfig
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.session.data.redis.config.ConfigureRedisAction;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
 * @param
 * @Description:共享session
 * @Author:SimonHu
 * @Date: 2020/5/18 11:59
 * @return
 */
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)//maxInactiveIntervalInSeconds设置session有效时间,单位是秒;默认是30分钟
public class SessionConfig {
    @Value("${spring.redis.host}")
    private String hostName;
    @Value("${spring.redis.port}")
    private int port;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.database}")
    private int database;
    
    @Bean
    public JedisConnectionFactory connectionFactory() {
        JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
        connectionFactory.setPort(port);
        connectionFactory.setHostName(hostName);
        connectionFactory.setPassword(password);
        connectionFactory.setDatabase(database);
        System.out.println("获取到的hostName是:" + hostName + ",port :" + port);
        return connectionFactory;
    }
    
    /**
     * 解决redis集群环境没有开启Keyspace notifications导致的
     * <p>
     * Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource
     */
    @Bean
    public static ConfigureRedisAction configureRedisAction() {
        return ConfigureRedisAction.NO_OP;
    }
}

 清除后需要重新登录。

 登录成功,redis上已经缓存了session,重启idea不用登录。

原理分析参考:Spring系列.@EnableRedisHttpSession原理简析

原文地址:https://www.cnblogs.com/SimonHu1993/p/12916410.html