一、首先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!