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:\windows\system32\drivers\etc

访问 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内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐