redis 实现分布式session配置

Redis分布式session配置

如上图,多实例下可以使用redis实现分布式session管理,客户端请求,经过负载均衡分发至tomcat实例,再经过session管理,实现session在redis中存取,这里暂时只有一台redis机器。

具体代码如下:

1、redis配置

可以使用spring-cache.xml作为redis配置文件名,首先配置redis缓存池:

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">    <property name="maxTotal" value="${redis.pool.maxTotal}"/>    <property name="maxIdle" value="${redis.pool.maxIdle}"/>    <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/>    <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/></bean>

2、配置分布式session过滤器

<!-- 配置分布式session过滤器--><filter>    <filter-name>springSessionFilter</filter-name>    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>    <init-param>        <param-name>targetBeanName</param-name>        <param-value>springSession</param-value>    </init-param></filter><filter-mapping>    <filter-name>springSessionFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

3、redis session配置

配置分布式session管理bean,经过第二步过滤器的请求,都会经过这个管理bean,配置SessionRepositoryFilter.java默认构造函数是redis session操作仓RedisOperationsSessionRepository。

<bean id="springSession" class="org.springframework.session.web.http.SessionRepositoryFilter">   <constructor-arg>      <bean class="org.springframework.session.data.redis.RedisOperationsSessionRepository">         <constructor-arg>            <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"                 p:usePool="true"                 p:port="${redis.session.port}"                 p:hostName="${redis.session.server}"                 p:password="${redis.session.pwd}"                 p:database="${redis.session.db}"                 p:poolConfig-ref="jedisPoolConfig"/>         </constructor-arg>         <property name="defaultMaxInactiveInterval" value="3600"/> <!-- 若不设置,session默认失效时间是半小时,这里设置成1小时-->      </bean>   </constructor-arg></bean>
参考文档:http://www.jianshu.com/p/1361d578035d
时间: 2024-08-09 21:17:29

redis 实现分布式session配置的相关文章

Redis实战和核心原理详解(5)使用Spring Session和Redis解决分布式Session跨域共享问题

Redis实战和核心原理详解(6)使用Spring Session和Redis解决分布式Session跨域共享问题 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提

基于Redis实现分布式Session

1.概述 我们可以自己实现类似Session的机制,采用 Redis 等分布式缓存中间件来实现. Redis是独立于应用服务器的,基于Redis实现的Session机制自动具备了分布式属性. Redis可以很方便地做集群配置,则Session避免了单点故障. 2.实现 实现代码极其简单,如下所示. /** * @author liuhailong2008#foxmail */ public class ApiSession implements Serializable { private st

Spring Session + Redis实现分布式Session共享

通常情况下,Tomcat.Jetty等Servlet容器,会默认将Session保存在内存中.如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案.但是这种方案有一个缺点,就是不利于扩展. 目前越来越多的应用采用分布式部署,用于实现高可用性和负载均衡等.那么问题来了,如果将同一个应用部署在多个服务器上通过负载均衡对外提供访问,如何实现Session共享? 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session

[Node.js] Node + Redis 实现分布式Session方案

Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Session 数据保留在服务端,而为了标识具体 Session 信息指向哪个连接,需要客户端传递向服务端发送一个连接标识,比如存在Cookies 中的session_id值(也可以通过URL的QueryString传递),服务端根据这个id 进行存取状态信息. 在服务端存储 Session,可以有很多种方案: 内存存储 数据库存储 分布式缓存存储 分布式Session

使用Spring Session和Redis解决分布式Session跨域共享问题

前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 文末分享了我一部分私人收藏 有兴趣的可以收藏看一下的 都是架构师进阶的内容 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session共享功能,将Sessi

Redis学习笔记~StackExchange.Redis实现分布式Session

回到目录 对于多WEB的环境现在已经是必须的了,很难想像一台WEB服务器面对百万并发的响应,所以,我们需要多台WEB服务器集群合作,来缓解这种高并发,高吞吐的场景,而对于多WEB的场景又会有个问题出现,即session存储的问题,如一个用户登陆后,把一个状态信息存储到当前WEB服务器的session里,而你请求其它页面时,很可能就被路由到另一台服务器了,这时,session也就丢了,而对于这种情况,有人把redis这个存储中间件想了起来,对它进行了封装,就有了今天基于redis的session共

springboot+redis+nginx+分布式session

第一步 启动一个redis 我这里用的是windows版本的redis,进入磁盘后启动redis 启动命令:redis-server.exe redis.windows.conf 启动nginx 主要是配置一下 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; upstream

SpringBoot利用Redis管理分布式Session

https://www.jianshu.com/p/fe9a6c3bda4e 1.添加pom配置 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <

asp.net mvc 用Redis实现分布式集群共享Session。

1.这两天研究Redis搞分布式session问题,网上找的资料都是用ServiceStack.Redis来实现的,但是在做性能测试的时候发现最新的v4版本有限制每小时候最多请求6000次,因为官网开始商业化要收费了,好坑爹的说,还好我前期弄了个性能测试列子,不然上线以后出问题那就麻烦了.后面找了个NServiceKit.Redis(好像就是ServiceStack.Redis的v3版本)来替代v4的收费版. 2.解决方案是 Redis+cookie方式实现记录用户登录状态 cookie:存放用