一、引入maven依赖,项目spring是4.1.5,需要兼容,否则报错,
<spring.version>4.1.5.RELEASE</spring.version>
<!-- 使用redis存储session -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
<!-- <version>1.6.6.RELEASE</version> --><!-- 1.7以下不支持集群 -->
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
</exclusion>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency>
二、web.xml增加过滤器,放在最前面
<!-- session -->
<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>
</filter-mapping>
三、配置spring-session.xml:
单机版redis:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="10"/><!-- 最大空闲连接数, 默认8个 -->
<property name="maxTotal" value="20"/><!-- 最大连接数, 默认8个 -->
<property name="blockWhenExhausted" value="true"/><!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<property name="maxWaitMillis" value="1000"/><!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
<property name="testOnBorrow" value="true"/><!-- 在获取连接的时候检查有效性, 默认false -->
</bean>
<!-- redis连接配置,依次为主机ip,端口,密码,是否使用池,连接池配置引用 -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="127.0.0.1" p:port="6379" p:usePool="true" p:pool-config-ref="jedisPoolConfig">
</bean>
<!-- 配置spring-session -->
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
<!-- session过期时间,单位是秒 -->
<property name="maxInactiveIntervalInSeconds" value="30"></property>
</bean>
</beans>
集群:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="10"/><!-- 最大空闲连接数, 默认8个 -->
<property name="maxTotal" value="20"/><!-- 最大连接数, 默认8个 -->
<property name="blockWhenExhausted" value="true"/><!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<property name="maxWaitMillis" value="1000"/><!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
<property name="testOnBorrow" value="true"/><!-- 在获取连接的时候检查有效性, 默认false -->
</bean>
<!-- redis连接配置,依次为主机ip,端口,密码,是否使用池,连接池配置引用 -->
<!-- <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="127.0.0.1" p:port="6379" p:usePool="true" p:pool-config-ref="jedisPoolConfig">
</bean> -->
<!-- notify-keyspace-events Exg 使用集群必须设置redis的配置文件 -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!-- Redis-CLuster -->
<constructor-arg index="0" ref="redisClusterConfig"/>
<!-- 配置Redis连接池 ,可以不配置,使用默认就行! -->
<constructor-arg index="1" ref="jedisPoolConfig"/>
</bean>
<bean id="redisClusterConfig"
class="org.springframework.data.redis.connection.RedisClusterConfiguration">
<property name="maxRedirects" value="3" />
<property name="clusterNodes">
<set>
<bean id="cluster0" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg value="12.3.11.155" />
<constructor-arg type="int" value="7001" />
</bean>
<bean id="cluster1" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="12.3.11.155" />
<constructor-arg name="port" value="7002" />
</bean>
<bean id="cluster2" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="12.3.11.155" />
<constructor-arg name="port" value="7003" />
</bean>
<bean id="cluster3" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="12.3.11.155" />
<constructor-arg name="port" value="7004" />
</bean>
<bean id="cluster4" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="12.3.11.155" />
<constructor-arg name="port" value="7005" />
</bean>
<bean id="cluster5" class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="12.3.11.155" />
<constructor-arg name="port" value="7006" />
</bean>
</set>
</property>
</bean>
<!-- 让Spring Session不再执行config命令 -->
<!-- <util:constant static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/>
-->
<!-- 配置spring-session -->
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
<!-- session过期时间,单位是秒 -->
<property name="maxInactiveIntervalInSeconds" value="30"></property>
</bean>
</beans>