七叶笔记 » 数据库 » redis实现分布式session的解决方案

redis实现分布式session的解决方案

一、首先Session

Session 是客户端与服务器通讯会话技术, 比如浏览器登陆、记录整个浏览会话信息。session存放在服务器,关闭浏览器不会失效。

Session实现原理

客户对向服务器端发送请求后,Session 创建在服务器端,返回Sessionid给客户端浏览器保存在本地,当下次发送请求的时候,在请求头中传递sessionId获取对应的从服务器上获取对应的Sesison

请求过程:

服务器端接受到客户端请求,会创建一个session,使用响应头返回 sessionId给客户端。客户端获取到sessionId后,保存到本地。

下次请求:客户端将本地的sessionId通过请求头发送到服务器。服务器从请求头获取到对应的sessionId,使用sessionId在本地session内存中查询。

session 包括 sessionId和sessionValue

session本身是临时的 token(令牌)与 sessionId很相似 保证了临时且唯一

玩下session:

前提需要安装nginx

配置如下:

host文件:c:windowssystem32driversetc

访问 www.toov5.com时候 走的nginx的服务器域名 然后默认监听的端口号80。 进而通过配置upstream 负载均衡!

lz在玩时候,弄到了半夜,也没排查出来原因,妈的气死了! 地址写成了 127.0.0.1

yml:

pom:

服务器端代码:

启动类:启动两次 端口号修改8080、 8081

运行结果:8080 和 8081来回切换 负载均衡

调用服务器端方法: fist 存放在8080

查询不到哦!

8081 没有 就创建新的session 覆盖原来的sessionId true没有就创建

下次 又去8080 又没有 又创建 来回折腾..............

此时:

修改false 没有时候不创建

然后传入 value 然后继续轮训访问;

二、分布式Session

1、直接使用cookie替代session 不安全(存客户端)

2、Nginx的IP绑定 目的是同一个IP只能指定同一个机器访问(相当于没做集群了)

3、 使用数据库(效率低)

4、tomcat内置Session同步,通过广播可能产生延迟,占用带宽

5、使用 Spring-Session框架,相当于把session缓存缓存到redis中 (缓存框架,缓存Session的值)

6、可以使用token替代session功能。自定义令牌替代session

Spring-Session 重写httpsession框架,将对应的值缓存到redis中,有点类似于一级、二级缓存。

必须要有的!

yml文件:

 非常非常重要的:一定要jredis引入 同时这个对session提供了大力支持哈哈

yml 的redis配置文件:

 后台业务逻辑:

配置:

初始化:

启动类:

虽然是存放在8081,但是访问时候 都有哦~ 大家试试玩玩吧~~

 引入的jar包重写了 HttpSession类 去解决Session共享问题

而此时的:redis

控制台:

补充:

Spring Boot 整合redis:

 到此这篇关于redis实现分布式session的解决方案的文章就介绍到这了,更多相关redis 分布式session内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章