一、引入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>