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

相關文章
相關標籤/搜索