redis实现Tomcat集群部署中的Session共享

3 篇文章 0 订阅
1 篇文章 0 订阅
 <!-- host="192.168.159.129"       Redis地址 -->
    <!-- port="6379"                  Redis端口 -->
    <!-- password="123456"            Redis密码 -->
    <!-- database="0"                 存储Session的Redis库编号 -->
    <!-- maxInactiveInterval="60"     Session失效的间隔(秒) -->
    
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
     <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
               host="localhost"   
               port="6379"   
               database="0"
               maxInactiveInterval="60" />

 注:
  1)Manager节点中的className属性为必选项,其它均为可选项
  2)maxInactiveInterval设置不生效,暂时找不到原因,在部署中发现Session失效的间隔一直都是读取tomcat/conf/web.xml中的session-config节点中配置的session-timeout属性值,且都是以秒为单位,(这个地方maxInactiveInterval好像不起作用,和web.xml中配置的session-config优先级有关?)
  3、添加Tomcat-redis-session-manager的jar包到tomcat/lib目录下,需要的jar包如下:
    commons-pool2-2.2.jar
    jedis-2.5.2.jar
    tomcat-redis-session-manage-tomcat7.jar

启动Redis
下载redis安装包。解压。
make $$ make install
cd src
make install
1、首先为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中
a)创建bin和redis.conf文件
复制代码 代码如下:
mkdir -p/usr/local/redis/bin
mkdir -p/usr/local/redis/ect
b)执行Linux文件移动命令:
复制代码 代码如下:
mv /lamp/redis-3.0.7/redis.conf /usr/local/redis/etc
cd /lamp/redis-3.0.7/src
mv mkreleasdhdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
为了让Redis后台运行,一般还需要修改redis.conf文件:
  vi /etc/redis.conf 
    修改 daemonize 配置项为 yes ,使Redis进程在后台运行:
   daemonize yes
配置完成后,启动Redis: # redis-server /usr/local/redis/conf/redis.conf
  

 注:
  1)GitHub中该开源组件(Tomcat-redis-session-manager)的主页: https://github.com/jcoleman/tomcat-redis-session-manager
  2)该组件目前不支持Tomcat8,我用的是Tomcat 7.0.68版本
  3)在程序中将对象放到Redis里时,该对象必须实现java.io.Serializable接口,否则将报错,如果对象中有其它对象的引用,该引用对象也需实现java.io.Serializable接口,所以在使用request.getSession().setAttribute()方法时,一定要注意一下这一个细节。
  4)因为要把Tomcat-redis-session-manager的jar包放到Tomcat/lib中,对Tomcat的部署造成了侵入,可以使用Spring Session来替代,spring-session使用拦截器重新包装了request从而替换session实现
  5)因为所有集群的Tomcat中配置的Redis地址是一个,如果Redis崩溃了,那么Session就不可用了,所以需要部署Redis集群,实现故障自动切换,高可用的目标。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值