redis单点登陆

咱们都知道如今若是使用一个tomcat做为服务器的话,那么session信息就是一个有状态的用户登陆信息,一旦出现宕机,那么正在进行操做的用户的全部操做就会被终止。再者一个tomcat如今也知足不了一个中型网站的访问量了,因此咱们有了Apache负载均衡和tomcat的集群,可是出现集群还有一个问题咱们要解决,那就是如何保证同一我的在不一样的服务器节点上的操做是同一我的的操做,因而又出现了session共享的问题,解决session共享问题,最多见的就是session复制,也就是在用户登陆的时候访问的是咱们的A节点,在A节点上咱们建立用户的登陆信息,保存在session中,同时咱们又要在B节点上复制一份用户的session用来保证当一个节点挂了以后咱们的用户能经过另一个节点继续用户的操做,可是这种状况非常消耗内存,由于咱们也不知道用户的访问会是A、B中的哪个,但却要在两个服务器上都要保存一份用户的session!因而咱们将用户的登陆信息抽出来单独做为一个保存session(用户登陆信息)服务器:redis,redis是一个nosql的数据库,咱们把用户的登陆信息存在redis中,内次访问咱们都从redis中区获取用户的登陆信息,若是redis里面存有用户有效的登陆信息,那么就表示这个用户已经登陆系统,对用用户的全部权限下的全部操做,都是能够执行的,同时咱们也知道是谁在进行操做,能够记录用户的操做日志了,当其中一个节点挂了,另一个节点在进行操做前仍是要从redis中验证用户是否登陆并确实是谁在进行操做。因此总得来讲redis单点登陆有一下几个特色:redis

一、咱们不用在集群中实现session的复制达到共享的效果,把登陆信息保存在redis中实现session的共享spring

二、在每个操做进行前咱们都要从redis中获取用户的登陆信息,进行验证用户是否已经登陆,而后执行对象的操做sql

三、redis实现了无状态的登陆,咱们在redis中设置登陆时长,超过指定时间删除登陆用户信息,那么用户就须要从新登陆从新记录用户的登陆信息。数据库

 

因此实现redis的单点登陆其实就是讲用户的登陆信息单独抽离出来做为一个单独的session服务器,全部的操做都要等过redis验证用户是否登陆,并获取用户的登陆信息,记录相关日志操做!可是redis也会出现宕机,因此咱们又有了redis的集群,这个redis的集群我下次再分享由于我如今也没有接触过,还有就登陆验证室友框架帮咱们作的:shiro和springsecurity等。还有就是redis的配置相关问题这里就不在多说,网上一大堆相关的配置,能够用api本身封装,也能够交给spring进行管理(配置文件的形式),感兴趣的能够本身去研究下!api

相关文章
相关标签/搜索