Redis实现分布式存储Session

时间:2023-01-25 14:17:20

前言:

在单个项目时,一般都是用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 把

Redis实现分布式存储Session

  删除第一个红框,增加第一个红框,

  启动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分 但是在线上的运行的时候,不到一个小时就自动退出了,这个问题这两天我一直再找。