Redis 分布式緩存,是如何實現多台服務器SESSION 實時共享的


現在提到多服務器的共享session,幾乎都是回答用redis。
對於redis實現幾台服務器共享session,不是很理解。
假如一個網站分別部署在A B C 3 台服務器上,他們的代碼都是相同的。用戶在訪問的過程中是隨機切換到其他服務器,使用redis來共享session,那么是這3台服務器是如何實現session 實時共享的?

 

首先要明確session和cookie的區別。瀏覽器端存的是cookie每次瀏覽器發請求到服務端是http 報文頭是會自動加上你的cookie信息的。服務端拿着用戶的cookie作為key去存儲里找對應的value(session).

同一域名下的網站的cookie都是一樣的。所以無論幾台服務器,無路請求分配到哪一台服務器上同一用戶的cookie是
不變的。也就是說cookie對應的session也是唯一的。

只要保證多台業務服務器訪問同一個redis服務器(或集群)就行了。

 

將REDIS 另外的部署到第四台服務器D, A B C 三台服務器上的PHP配置連接的REDIS是這台D服務器。那么就實現了統一的SESSION 實時共享,

 

PHP設置Session共享(php.ini 配置redis)

如果你使用的是PHP那么恭喜你,配置非常的簡單。PHP通過兩行配置就可以把Session存放在Memcached或者Redis中,當然你要提前配置好他們。修改php.ini:

    session.save_handler = memcache
    session.save_path = "tcp://192.168.56.11:11211"

  

使用Redis存儲Session

session.save_handler = redis     # 默認的設置是file,這里改成redis
session.save_path = "tcp://192.168.2.11:6379?auth=passwd" # 這里填redis的連接配置參數
;session.save_path = "tcp://192.168.2.11:6379"  # 如果redis不帶密碼,則使用這種配置
;session.save_path = "tcp://127.0.0.1:6379"  # 如果redis不帶密碼,則使用這種配置

  

上面這個redis的session_save_path的路徑可以寫成具體的一個ip地址。這樣就實現session共享了。


免責聲明!

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



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