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

2018-08-1114:38:32 1 1,741

什么是Redis?

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

一、与其他用户状态保存方案比较

一般开发中用户状态使用session或者cookie,两种方式各种利弊。

Session:在InProc模式下容易丢失,并且引起并发问题。如果使用SQLServer或者SQLServer模式又消耗了性能。

Cookie则容易将一些用户信息暴露,加解密同样也消耗了性能。

Redis采用这样的方案解决了几个问题,

1、Redis存取速度快。

2、用户数据不容易丢失。

3、用户多的情况下容易支持集群。

4、能够查看在线用户。

5、能够实现用户一处登录。

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服务。

  • 微信号
  • 微信扫一扫加我~~
  • weinxin
  • 微信公众号
  • 微信扫一扫关注我吧~~
  • weinxin
广告也精彩

发表评论

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

目前评论:1   其中:访客  1   博主  0

    • avatar 运维老司机

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