首页 > 数据库 >Tomcat 8.x基于Redis Session会话保持

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

时间:2022-12-30 16:05:18浏览次数:36  
标签:Tomcat tomcat Session Redis redis 用户 session tomcat8

什么是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的配置可以利用一个开源组件,直接配置即可以使用,比较简单方便(直接参考这个文章即

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>标签中加入以下内容

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

保存退出,重启tomcat即可

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

5)测试redis session

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

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

保存退出,重启Tomcat服务。

标签:Tomcat,tomcat,Session,Redis,redis,用户,session,tomcat8
From: https://blog.51cto.com/u_12018693/5980569

相关文章

  • Docker 安装 Redis
    Docker安装RedisRedis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库,并提供多种语言的API。Redis是一个开源(BSD许......
  • 使用redisTemplate时,Lists和Sets报错
    在使用RedisUtils工具类的时候,Lists和Sets报错,原因是由于缺少谷歌的依赖,只需要添加对应的依赖即可1<dependency>2<groupId>com.google.guava</groupId>3......
  • Redis源码剖析系列博文开篇&大纲
    今年我启动了好几个比较有挑战的个人项目,比如写一门编程语言、成为一名视频UP主、写科幻小说……这些项目目前进度都很堪忧,一方面这些项目挑战都比较大,另一方面业余时间还......
  • redis 批量删除key
    以14号库为例,8号库照猫画虎即可1.首先先尝试连接redis,-h指定地址-p指定端口-n指定第几个库切记不要先执行keys*,可以先执行dbsize查看一下key的数量再决定是否执行......
  • HttpSession详解
    HttpSession服务端的技术服务器会为每一个用户创建一个独立的HttpSessionHttpSession原理当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session并且生......
  • Redis数据清理
    Windows服务器1、打开cmd命令窗口,切换至Redis安装目录下的bin文件夹2、在cmd命令窗口,输入连接Redis指令:./redis-cli.exe-h127.0.0.1-p63893、连接成功后,如果Redis......
  • SpringDataRedis:第一章:简介
    SpringDataRedis简介项目常见问题思考我们目前的系统已经实现了广告后台管理和广告前台展示,但是对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如......
  • Redis 学习记录
    下载与安装Redisredis......
  • Redis数据结构存储系统:第四章:底层实现原理
    应用场景:设置限制的优惠活动的信息;一些及时需要更新的数据,积分排行榜;手机验证码的时间;限制网站访客访问频率;Redis数据结构存储系统:第四章:底层实现原理Redis以什么形......
  • Redis数据结构存储系统:第三章:Redis在项目中如何使用?
    简单介绍一个redis?redis是一个key-value类型的非关系型数据库,基于内存也可持久化的数据库,相对于关系型数据库(数据主要存在硬盘中),性能高,因此我们一般用redis来做缓存使用;并......