什么是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>标签中加入以下内容
- <!-- 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服务。
标签:Tomcat,tomcat,Session,Redis,redis,用户,session,tomcat8 From: https://blog.51cto.com/u_12018693/5980569