1. 程式人生 > >Redis實現分散式儲存Session

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分 但是在線上的執行的時候,不到一個小時就自動退出了,這個問題這兩天我一直再找。