Tomcat 8.x基于Redis Session会话保持

小柒助手 Tomcat1 79,1034字数 674阅读2分14秒阅读模式

什么是Redis?

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

一、与其他用户状态保存方案比较文章源自小柒网-https://www.yangxingzhen.cn/1310.html

一般开发中用户状态使用session或者cookie,两种方式各种利弊。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

Session:在InProc模式下容易丢失,并且引起并发问题。如果使用SQLServer或者SQLServer模式又消耗了性能。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

Cookie则容易将一些用户信息暴露,加解密同样也消耗了性能。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

Redis采用这样的方案解决了几个问题,文章源自小柒网-https://www.yangxingzhen.cn/1310.html

1、Redis存取速度快。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

2、用户数据不容易丢失。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

3、用户多的情况下容易支持集群。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

4、能够查看在线用户。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

5、能够实现用户一处登录。文章源自小柒网-https://www.yangxingzhen.cn/1310.html

6、支持持久化。

同一个应用在运行多个tomcat实例的时候,经常需要共享Session。tomcat配置共享session有多种方式

1、利用tomcat自身集群特性进行配置;

2、利用Memcache第三方缓存进行配置;

3、利用Redis第三方缓存进行配置;

由于生产环境我们主使用了redis(在阿里云中使用了redis服务)本文重点介绍了tomcat利用redis进配置session共享。

重点在于tomcat 8.x

因为tomcat7还有点不同,tomcat7的配置可以利用一个开源组件,直接配置即可以使用,比较简单方便(直接参考这个文章即可:http://blog.csdn.net/qq584852076/article/details/46502185)。

tomcat8却是有不同的,开源组件明确说是不支持的。

开源组件在这里: https://github.com/jcoleman/tomcat-redis-session-manager

1)下载以下压缩包

[root@localhost ~]# wget -c https://mirrors.yangxingzhen.com/tomcat_redis_seession/tomcat8-redis-seseion.tar.gz

2)解压

[root@localhost ~]# tar zxf tomcat8-redis-seseion.tar.gz

3)拷贝jar到tomcat的lib目录下

[root@localhost ~]# mv tomcat8-redis-session/*.jar /usr/local/tomcat/lib

4)修改tomcat下的context.xml文件

在<Context>标签中加入以下内容

<!-- Redis session共享配置 -->
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="192.168.31.66"
port="6379"
database="1"
maxInactiveInterval="60"
/>

保存退出,重启tomcat即可

注意:将host改成 线上redis地址,port是对应的端口,database 尽量选一个目前没有的redis库(方便测试)

5)测试redis session

分别在tomcat发布目录下创建index.jsp文件,内容如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>获取session id</title>
</head>
<body>
Session Id : <%= request.getSession().getId() %>
</body>
</html>

保存退出,重启Tomcat服务。

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
我的微信
微信号已复制
微信公众号
微信扫一扫,关注我!
weinxin
我的公众号
公众号已复制
Tomcat最后更新:2022-11-23
小柒助手
  • 本文由 小柒助手 发表于 2018年8月11日 14:38:32
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.cn/1310.html
    • 运维老司机
      运维老司机 6

      亲测,写的不错,感谢博主 :razz:

    匿名

    发表评论

    匿名网友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    拖动滑块以完成验证