nginx+redis實現(xiàn)session的共享

? ? ? ? ? ? ? ? ? ??nginx+redis實現(xiàn)session的共享

? ? ? ?負(fù)載均衡需要面臨的一個問題是內(nèi)存數(shù)據(jù)的同步。例如:我有A,B兩臺服務(wù)器做了負(fù)載均衡,當(dāng)我在A服務(wù)器上執(zhí)行了登錄并且將登錄數(shù)據(jù)存入session的時候,這些session數(shù)據(jù)只存在于A服務(wù)器上,而沒有在B服務(wù)器上,假如在處理下一個請求的時候,我需要用到session的數(shù)據(jù),而不巧的是,這個請求剛好被交由B服務(wù)器來處理,這時候就會出現(xiàn)B服務(wù)器拿不到session數(shù)據(jù)的情況,從而造成錯誤。

? ? ? ?這是一個無法避免的問題,有若干的解決方案,歸結(jié)起來都是要實現(xiàn)session等數(shù)據(jù)在各負(fù)載均衡分支中的同步,第一種想到的方案是把這些數(shù)據(jù)放在mysql等數(shù)據(jù)庫,也就是說存在磁盤,但是我們都知道session之所以出現(xiàn)是因為它是在內(nèi)存中的,程序讀取內(nèi)存的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)比讀取磁盤的數(shù)據(jù)快,所以我們把一些經(jīng)常用到的東西都放在session里面。

? ? ? ?有沒有一種數(shù)據(jù)庫,是存放在內(nèi)存中的呢?這就是redis。通俗的講,它就是一個數(shù)據(jù)庫,但是這個數(shù)據(jù)庫是存在與內(nèi)存里面的,所以存取起來速度要比讀取磁盤的數(shù)據(jù)快得多。又因為它是一個數(shù)據(jù)庫,所以可以實現(xiàn)數(shù)據(jù)的同步。

? ? ? ?我們把session數(shù)據(jù)存放在redis中,然后所有的集群分支都可以去訪問這個數(shù)據(jù)庫里面的東西,這就是全局緩存的原理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容