黑马程序员技术交流社区
标题:
【成都校区】redis实现session共享原理和原因
[打印本页]
作者:
小蜀哥哥
时间:
2019-11-7 17:58
标题:
【成都校区】redis实现session共享原理和原因
要用 session + redis 共享session的原因:
先进的企业级或者大型的网站平台,都是分布式结构,分布式的好处是通过nginx分发请求,让多个服务器各自处理请求,来减少单一服务器的压力,并且提高执行效率。
在这个分布式结构下,如果不用共享session的话,就会出现问题。当一个客户端发送一个请求(无session),通过nginx将第一次请求分发给服务器1,服务器判断无session,就让那个客户进行登录操作,并得到响应,此时客户端会存储一个来自服务器1响应的session,并存储在客户端。
当客户端发送第二次请求的时候,此时本次请求已经携带了session(跳过登录),nginx却将请求分发给服务器2,因为服务器2中没有session,所以无法与客户端session进行对应。所以程序会出现异常或是报错,无法正常响应。
解决方法 : session + redis 实现session 共享
session + redis 实现session 共享原理:
为了避免上面session 在服务器直接不共享的问题,就将 session 放入 redis 中。
当客户端第一次发送请求后,nginx将请求分发给服务器1 ,然后将服务器1 产生的session 放入redis中,这样的话 客户端、服务器1 和redis中都会有一个相同的session,当客户端发送第二次请求的时候,nginx将请求分发给服务器2 (已知服务器2 中无session),因为客户端自己携带了一个session,那么服务器2 就可以拿着客户端带来的session中的session ID去redis中获取session,只要拿到这个session,就能执行之后的操作。
1.png
(24.83 KB, 下载次数: 110)
下载附件
2019-11-7 17:56 上传
2.png
(23.08 KB, 下载次数: 119)
下载附件
2019-11-7 17:57 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2