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,就能執行之后的操作。


<ignore_js_op>

1.png (24.83 KB, 下載次數: 0)

 

1.png
<ignore_js_op>

2.png (23.08 KB, 下載次數: 1)

 

2.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM