pom.xml
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.3.1.RELEASE</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</exclusion>
</exclusions>
</dependency>
...
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.6.RELEASE</version>
</dependency>
WebConfig.java
package com.alibaba.force.web.config;
import com.alibaba.force.api.shared.aop.ForceHandlerInterceptor;
import com.alibaba.force.common.enums.VisibilityLevelEnum;
import com.alibaba.force.common.util.PropertyUtils;
import com.alibaba.force.dal.model.AccessLevelEnum;
import com.lambdaworks.redis.resource.ClientResources;
import com.lambdaworks.redis.resource.DefaultClientResources;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.format.FormatterRegistry;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* @author van.yzt
* @date 2017/08/29
*/
@Configuration
@EnableWebMvc
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 108000)
public class WebConfig extends WebMvcConfigurerAdapter {
...
@Bean
public LettuceConnectionFactory connectionFactory() {
RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(
PropertyUtils.getRedisSentinelMasterName(),
PropertyUtils.getRedisSentinelNodes());
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisSentinelConfiguration);
ClientResources clientResources = new LettuceRedisClientResourceConfig(DefaultClientResources.builder());
lettuceConnectionFactory.setClientResources(clientResources);
lettuceConnectionFactory.setTimeout(5000);
lettuceConnectionFactory.setPassword(PropertyUtils.getRedisConfigPassword());
lettuceConnectionFactory.setShareNativeConnection(true);
return lettuceConnectionFactory;
}
...
}
This configuration uses Redis Sentinel
.
Configuration
redis.sentinel.master.name=force-master
redis.sentinel.nodes=10.101.104.13:26379,10.101.104.13:26380,10.101.104.13:26381
redis.config.password=YPr2Ymj^8$8a2*aD0F7z^L