什么是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服务。
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!
广东省深圳市南山区 电信 1F
亲测,写的不错,感谢博主