spring-session之5 redis集群配置步骤总结
前文,我们讲了那么多,都是一步一步调试过来的,为了更好的前进,现在我们先总结下配置步骤
好,今天的目标是:
- 总结配置步骤
简单四步,开始 spring-session redis 配置人生
1. pom.xml 添加 jar依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
....
<properties>
<version.spring-session>1.2.2.RELEASE</version.spring-session>
<!--不兼容 1.7.4.RELEASE -->
<version.spring-data-redis>1.7.1.RELEASE</version.spring-data-redis>
</properties>
<dependencies>
....
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>${version.spring-session}</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>${version.spring-session}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>${version.spring-data-redis}</version>
</dependency>
....
</dependencies>
</project>
2. web.xml 添加 springSessionRepositoryFilter 配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
...
<!-- spring-session config -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:spring-session-cluster.xml
</param-value>
</context-param>
<!-- 这个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>
...
</web-app>
3. spring-session-cluster.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
">
<context:annotation-config />
<util:properties id="redis" location="classpath:redis-cluster.properties"></util:properties>
<!-- RedisHttpSessionConfiguration -->
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration" />
<!--JedisConnectionFactory -->
<bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<constructor-arg index="0">
<!-- since spring-data-redis 1.7 -->
<bean class="org.springframework.data.redis.connection.RedisClusterConfiguration">
<constructor-arg index="0">
<set>
<value>#{redis['redis.redisClusterConfiguration.clusters']}</value>
</set>
</constructor-arg>
<!--
用于 redis.clients.jedis.JedisCluster.JedisCluster(Set<HostAndPort>, int, int, GenericObjectPoolConfig) 第三个参数 maxRedirections
默认值是5
一般当此值设置过大时,容易报:Too many Cluster redirections
-->
<property name="maxRedirects" value="#{redis['redis.redisClusterConfiguration.maxRedirects']}" />
</bean>
</constructor-arg>
<constructor-arg index="1">
<bean class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="#{redis['redis.jedisPoolConfig.MaxIdle']}" />
<property name="testOnBorrow" value="#{redis['redis.jedisPoolConfig.testOnBorrow']}" />
<property name="testOnReturn" value="#{redis['redis.jedisPoolConfig.testOnReturn']}" />
<!-- 新版jedis 不支持这个参数了 -->
<!-- <property name="maxWait" value="#{redis['redis.jedisPoolConfig.MaxWait']}" /> -->
<!-- <property name="maxActive" value="#{redis['redis.jedisPoolConfig.MaxActive']}" /> -->
</bean>
</constructor-arg>
</bean>
</beans>
4. redis-cluster.properties
#############for org.springframework.data.redis.connection.RedisClusterConfiguration###################
#只需要配置 master
#理论上只需要配置一个节点即可,配置多个是为了防止单个节点挂掉,
redis.redisClusterConfiguration.clusters=10.88.21.31:10000,10.88.22.25:10000,10.88.21.31:10001
#用于 redis.clients.jedis.JedisCluster.JedisCluster(Set<HostAndPort>, int, int, GenericObjectPoolConfig) 第三个参数 maxRedirections
#默认值是5
#一般当此值设置过大时,容易报:Too many Cluster redirections
redis.redisClusterConfiguration.maxRedirects=3
###########for redis.clients.jedis.JedisPoolConfig##############################
redis.jedisPoolConfig.MaxIdle=60000
redis.jedisPoolConfig.testOnBorrow=true
redis.jedisPoolConfig.testOnReturn=true
#新版jedis 不支持这个参数了
#redis.jedisPoolConfig.MaxActive=50
#redis.jedisPoolConfig.MaxWait=5000
简单四步,开始 spring-session redis 配置人生
--to be continued
相关推荐
本压缩包包含的“spring-session+spring+redis”组合,是将Spring Session与Redis集成,利用Redis作为会话存储介质,以实现高可用性和可扩展性。 首先,我们要了解Spring Session的核心概念。它通过替换默认的...
需要注意的是,虽然文档中提到的配置可能只适用于非集群的Redis环境,但配置文件名为`spring-redis-cluster.xml`,这可能意味着配置也支持Redis集群。在集群环境中,需要配置多个节点,并可能使用Sentinel或Cluster...
3. **可扩展性**:通过Redis集群,可以轻松扩展以应对高并发场景。 4. **跨服务器会话共享**:对于分布式应用,可以在多个服务器之间共享会话,提升用户体验。 5. **持久化**:Redis支持多种持久化策略,保证数据不...
5. **设置session超时时间**:可以在配置中设置session的过期时间,Spring Session默认的过期时间是30分钟。 6. **处理冲突**:由于多服务器可能同时修改同一session,需要处理可能出现的并发冲突。Spring Session...
2. **配置Spring Session**: 在Spring配置文件中启用Spring Session并指定Redis作为session存储。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
注意,这只是一个基本的配置,实际部署时可能需要考虑更多因素,比如Redis的集群配置、session的过期策略、负载均衡等。在生产环境中,可能还需要监控Redis的性能和健康状况,以及处理可能出现的网络问题。此外,...
在现代Web应用开发中,...通过以上步骤,你可以在Spring 4中成功实现基于Redis的session共享。这个解决方案对于需要在多台服务器之间共享用户状态的分布式系统非常实用。请根据实际情况调整配置,以适应你的项目需求。
3. **启用 Spring Session**:在 Spring Boot 的主配置类上添加 `@EnableRedisHttpSession` 注解,这将启用 Redis 支持的 Session 管理: ```java @SpringBootApplication @EnableRedisHttpSession public class...
- **扩展性**:随着用户量增加,可能需要考虑 Redis 集群配置,以提供高可用性和水平扩展性。 总的来说,Redis 和 SpringSession 结合使用可以提供一个健壮的分布式 Session 管理解决方案。通过将 Session 存储在 ...
在IT行业中,尤其是在Web服务开发...通过上述步骤,你可以成功地配置Tomcat与Redis之间的session共享,从而提高Web应用的可扩展性和可靠性。在实际应用中,理解并掌握这些知识点对于构建高可用的分布式系统至关重要。
项目介绍.txt文件可能包含详细步骤,指导如何配置Spring Boot应用,集成Spring Session和Redis。通常,这包括以下几个关键步骤: 1. 添加相关依赖:在项目的pom.xml或build.gradle文件中,添加Spring Boot、Spring ...
"tomcat7+redis实现session共享依赖jar包"正是为了解决这个问题,它包含了在Tomcat集群中通过Redis实现Session共享所需的所有关键组件。 首先,我们需要理解Session的基本概念。在Web应用中,Session是服务器端用来...
5. **配置步骤**: - **安装Redis**:首先,你需要在集群的所有节点上安装和配置Redis服务器。 - **添加依赖**:在`lib`目录下的jar包可能是实现Tomcat与Redis交互所需的库,例如`jedis.jar`(Jedis是Java客户端...
你可以使用第三方库如`spring-session-data-redis`来简化这个过程。 3. **配置Nginx**:在Nginx配置文件中,设置负载均衡策略,例如轮询、最少连接数或根据session ID进行粘滞会话。使用`proxy_pass`指令将请求转发...
使用`tomcat-redis-session-manager`进行session共享的步骤大致如下: 1. 将该jar包添加到Tomcat的lib目录,或者如果是Spring Boot项目,则将其作为依赖加入到pom.xml或build.gradle文件中。 2. 配置Tomcat的...
3. 性能优化:监控Redis性能,考虑使用Redis集群以提高并发能力。 4. 集成测试:编写测试用例以验证会话在不同服务器间的正确同步。 通过以上步骤,你已成功入门Spring Session并实现了与Redis的整合。这只是一个...
通过以上步骤,你已经成功配置了Tomcat和Redis,实现了Session在多个Tomcat实例间的共享,提升了系统的可扩展性和可用性。在后续的维护和优化过程中,继续关注性能、安全和用户体验,确保系统的稳定运行。
总结,本方案通过Spring Session结合Redis的持久化存储以及Nginx的负载均衡和粘滞会话策略,有效地解决了Tomcat集群环境下的Session共享问题,提高了应用的可用性和扩展性。对于需要处理高并发和大规模用户量的Web...