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

  


免責聲明!

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



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