Tomcat使用Redis緩存Session,集中把Session緩存到Redis伺服器中,而不是緩存到伺服器的記憶體中,可以實作叢集伺服器共享Session。
應用場景:
1.當網站接收大量請求時,單一伺服器終究無法滿足需要處理的負荷量
2.伺服器不穩定(莫名其妙的當機等),搭建tomcat叢集救急。
3.項目更新疊代時,不影響項目的正常運作
Tomcat叢集中任何一台機器的下線或上線, 能夠不影響整個叢集對外的一緻性.并且具有較好的擴充性還有容錯能力。到目前為止,官方支援Tomcat6和Tomcat7,Tomcat8目前還沒有正式支援。
實作原理圖示:

預設已經安裝了redis和tomcat,沒有安裝可參考tomcat配置:redis安裝 tomcat安裝
nginx配置:
在Tomcat目錄的lib下,添加相關jar包,并修改相關的配置檔案(這個支援tomcat 8 以及redis 3.0,參考readMe.txt)
下載下傳連結:TomcatRedisSessionManager
網盤下載下傳:TomcatRedisSessionManager
可以下載下傳TomcatRedisSessionManager-1.0.zip包,解壓後包括所需的jar包和配置檔案。如下所示:
1) 将上面jar包拷貝到各個tomcat的lib目錄下, 将redis-data-cache.properties拷到tomcat的conf目錄下。
2) 配置檔案修改
(1) 修改redis-data-cache.properties配置檔案如下:
# redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....
redis.hosts=10.0.192.64:6379 (redis伺服器IP及端口号)
# Redis Password
redis.password= redis (REDIS配置檔案中設定的密碼)
# set true to enable redis cluster mode (叢集設定為true)
redis.cluster.enabled=false
(2)在tomcat/conf/context.xml檔案中增加以下兩行:
<Valve className="com.r.tomcat.session.management.RequestSessionHandlerValve"/>
<Manager className="com.r.tomcat.session.management.RequestSessionManager"/>
(3)設定tomcat/conf/web.xml 中 session有效期(感覺這個不很重要,預設設定的時間是30,大約在591行)
<session-config>
<session-timeout>60<session-timeout>
<session-config>
啟動:先啟動redis,再啟動 tomcat叢集,nginx等。
簡單測試: 用自己的index.jsp替換 tomcat/webapps/ROOT/index.jsp 檔案
下載下傳 index.jsp
關閉 Apache-Tomcat-7.0.88-2伺服器後,nginx通路的是Apache-Tomcat-7.0.88-1伺服器
還可以擷取到Apache-Tomcat-7.0.88-2的session資料,查詢redis,會發現redis鍵值都是加密資料
到這,可以算是結束了吧!