spring session data redis实现分布式session

654 阅读1分钟

版本

应用版本备注
Spring4.3.13.RELEASE
spring-session-data-redis1.3.5.RELEASE
spring-data-redis1.7.11.RELEASEspring-session-data-redis依赖进来
lettuce3.4.2.Final

依赖

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>${spring.sesion.data.redis.version}</version>
</dependency>

<dependency>
    <groupId>biz.paluch.redis</groupId>
    <artifactId>lettuce</artifactId>
    <version>${lettuce.version}</version>
</dependency>

配置

配置Redis连接

@EnableRedisHttpSession
public class RedisHttpSessionConfig {

    @Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private int port;
    @Value("${redis.password}")
    private String password;
    @Value("${redis.dbIndex}")
    private int dbIndex;
    @Value("${redis.connection.timeout}")
    private long timeout;

    @Bean
    public LettuceConnectionFactory lettuceConnectionFactory(LettucePool lettucePool) {
        return new LettuceConnectionFactory(lettucePool);
    }

    @Bean
    public LettucePool lettucePool() {
        DefaultLettucePool configuration = new DefaultLettucePool();
        configuration.setHostName(host);
        configuration.setPort(port);
        configuration.setPassword(password);
        configuration.setDatabase(dbIndex);
        configuration.setTimeout(timeout);
        return configuration;
    }

}

配置Filter

<filter>
		<filter-name>springSessionRepositoryFilter</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
<filter-mapping>
		<filter-name>springSessionRepositoryFilter</filter-name>
		<url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
		<dispatcher>ERROR</dispatcher>
</filter-mapping>

踩的坑

主要还是spring、spring-session-data-redis、lettuce版本之间冲突太多,需要测试不同的版本

参考

  1. Spring Session - HttpSession (Quick Start) - JavaConfig
  1. Spring Session - HttpSession (Quick Start) - XmlConfig