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单点登录有一下几个特点:

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

2、在每一个操作进行前我们都要从redis中获取用户的登录信息,进行验证用户是否已经登录,然后执行对象的操作

3、redis实现了无状态的登录,我们在redis中设置登录时长,超过指定时间删除登录用户信息,那么用户就需要重新登录重新记录用户的登录信息。

 

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

转载于:https://my.oschina.net/u/3689525/blog/1546861

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值