Redis實現分散式儲存Session
前言:
在單個專案時,一般都是用HttpSession介面儲存當前登入使用者的資訊。但是在分散式專案的情況下,session是不會共享的,那怎麼實現session共享呢?往下看。。。。
一、準備工作(基於centos7)
1.linux版本的redis 下載地址:http://download.redis.io/releases/redis-3.2.9.tar.gz
2.commons-pool2.jar 下載地址:https://pan.baidu.com/s/1nFU0oINw_1c_LKHa05JRHA 密碼:traq
3.jedis-2.5.2.jar 下載地址:https://pan.baidu.com/s/159z7Q4qa3fuHBih2NOA9SQ 密碼:3xyi
4.tomcat-redis-session-manager 下載地址:https://pan.baidu.com/s/1DCwnioyK_nhrMRd8AEOIMg 密碼:5476
5.tomcat7 下載地址:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz
6.redis視覺化工具(windowns版)下載地址:https://pan.baidu.com/s/1Jxp8I-7AK6dqrjUGYoeB1g 密碼:0op5
二、配置
1.把 commons-pool2.jar,jedis-2.5.2.jar,tomcat-redis-session.manager.jar 這三個jar包放到tomcat的lib下
2.修改tomcat埠,不修改記得開放當前tomcat的埠
3.修改tomcat conf目錄下的conetxt.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="127.0.0.1" port="6379" database="0" maxInactiveInterval="60" />
4,啟動redis ,啟動命令:redis-server redis.conf
5,修改tomcat webapp下ROOT,index.jsp 把
刪除第一個紅框,增加第一個紅框,
啟動tomcat,可以看見,當前的sessionId,開啟redis視覺化工具連線伺服器,看頁面的sessionId和reids客戶端的是否一致,
這時可以多開幾個tomcat看一下,每隔tomcat的sessionId是否一致。
三、問題
session失效時間:
設定實銷時間,需要在專案的web.xml和tomcat的web.xml設定session-config,timeout 。時間單位為分鐘,記住不要在tomcat的conetxt.xml中設定,否則是不會生效的。
session的時間重置
每次request請求都會重新整理session,使得Session的銷燬時間最後一次操作加你設定的時間
session會提前銷燬。
這是我在專案中遇到的問題,我在專案中設定登陸用session的失效時間是60分 但是在線上的執行的時候,不到一個小時就自動退出了,這個問題這兩天我一直再找。