在redis服务器192.168.50.140上搭建redis,redis默认端口为6379
Redis搭建:
redis依赖gcc,先安装:
1 |
yum install -y gcc-c++ |
下载redis,我使用的是redis-3.2.1.tar.gz,上传至linux /usr/local/redis-src/中,解压
进入解压后目录redis-3.2.1,执行make命令进行编译
安装到目录/usr/local/redis
执行:
1 |
make PREFIX=/usr/local/redis install |
安装完成之后将redis配置文件拷贝到安装目录下,redis.conf是redis的配置文件,redis.conf在redis源码目录,port默认6379。
执行命令:
1 |
cp /usr/local/redis-src/redis-3.2.1/redis.conf /usr/local/redis/ |
在redis安装目录启动和关闭redis:
启动:
1 |
./bin/redis-server ./redis.conf |
这种启动方式叫做前端启动,必须保持在当前窗口,如果ctrl + c 退出,那么redis也就退出了,不建议使用
那么后端启动:
首先修改redis.conf中daemonize的值,打开可以看到默认是no,修改为daemonize yes,启动即可。也可以在该配置文件中修改redis默认端口6379为其他值。
关闭redis:
1 |
./bin/redis-cli shutdown |
至此,redis服务器搭建完成。
tomcat与redis集成实现session共享:
环境为tomcat7 + jdk1.6的话:
在所有需要共享session的服务器的tomcat中目录下:
lib目录中添加以下五个jar包,注意版本最好一致,不然极容易出现错误,下边的测试是可用的:
conf目录中content.xml中加入:配置redis服务
1 2 3 4 5 6 |
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/> <Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="192.168.50.140" port="6379" database="0" maxInactiveInterval="60" /> |
环境为tomcat7 + jdk1.7或1.8的话:
在所有需要共享session的服务器的tomcat中目录下:
lib目录中添加以下三个jar包,测试通过:
conf目录中content.xml中加入:配置redis服务
1 2 3 4 5 6 |
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.50.140" port="6379" database="0" maxInactiveInterval="60"/> |
根据我这测试,是jkd1.8+tomcat7,在137和139两台tomcat中加入jar包且进行如上配置:
上传jar包
修改content.xml
启动redis服务,重新启动所有tomcat,启动nginx,刷新nginx页面,两台tomcat页面可以看到sessionid值不变,关闭某台tomcat,nginx中sessionid不变,说明session是共享的。
问题:
注意开通防火墙6379端口
有可能此时访问会报错,redis无法访问,这是由于redis的安全机制,默认只有127.0.0.1才能访问,在redis.conf中可以找到bind 127.0.0.1,你可以将此ip改为访问者ip,
如果有多个访问者,也可以把bind 127.0.0.1注释掉,然后在配置文件中找到protected-mode,修改protected-mode yes改为protected-mode no 关闭redis保护模式即可
详细可以参考这:http://www.cnblogs.com/liusxg/p/5712493.html
经过大牛指点:添加两个注意点:
1.按照如上配置,使用redis数据库,放入session中的对象必须要实现java.io.Serializable接口,使用memcache的可以不用实现Serializable接口
原因是:因为tomcat里使用的将session放置redis使用的工具类,是使用的jdk序列化模式存储的,这一点也是很容易理解的,session.setAttribute(String key, Object value),存储Object类型
object放入redis中又要能取出来,只能是序列化进行存储了,然后取出的时候进行反序列化。
所以我们在session中存储的任何对象,都必须实现序列化接口。
2.按照如上配置,使用redis做session存储空间时,web应用的session-time的时间单位会变成[秒],而不是原本的[分]
原因是:因为tomcat里使用的将session放置redis使用的工具类,在存储时为对tomcat容器时间做转换,
在redis中设置过期时间是使用秒作为单位的,有个命令叫expire可以设置redis键值过期时间,所以在context.xml配置文件中我们需要制定session过期时间(默认是60秒,配成1800即30分钟),这一点很重要。
请注意!!!!
context.xml配置说明:
1 2 3 4 5 6 7 8 9 10 |
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" //这里是redis服务器地址 host="192.168.50.140" //这里是redis端口,redis默认端口是6379 port="6379" //这里是redis数据库中的标识,标识第0个,默认使用0即可 database="0" //需要注意的是这里由于redis过期时间默认设置为60,单位是秒,session过期时间为30分钟,所以需要设置为1800对应30分钟 maxInactiveInterval="1800"/> |
相关推荐
centos7 安装Redis 与 Redis解决session共享,可根据文档进行安装和使用,本人调试过,没问题
tomcat集群使用redis解决session共享问题,压缩包包含redisclient-win32.x86.2.0客户端、Redis-x64-3.2.100服务、tomcat-redis-session以及部署安装文档
这个项目的核心目的是演示如何通过Redis来解决Session共享的问题,以实现在多服务器环境下的用户会话一致性。下面我们将深入探讨其中涉及的技术和知识点。 1. **SpringMVC**:作为Spring框架的一部分,SpringMVC是...
本文档旨在介绍如何使用 Spring Boot、Shiro 和 Redis 实现分布式 session 共享,以解决 Web 应用程序的登录 session 统一问题。 2. 相关依赖 在实现 session 共享之前,需要在项目中引入相关依赖项,包括: * ...
SSM+Redis 实现Session共享是现代Web应用中常见的技术组合,主要目的是在分布式系统中保持用户Session的一致性。SSM是指Spring、Spring MVC和MyBatis这三大Java Web开发框架的组合,而Redis则是一种高性能的键值存储...
总之,通过Tomcat和Redis结合实现Session共享,不仅解决了分布式环境下的会话管理问题,还利用了Redis的高效特性,提升了系统的整体性能。这个方案对于大型、高并发的Web应用来说,是一种有效的优化策略。
redis+session共享,redis+session共享,redis+session共享,redis+session共享redis+session共享,redis+session共享,redis+session共享,redis+session共享,redis+session共享
这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...
标题 "tomcat8-redis-session共享" 涉及到的是在Tomcat 8中使用Redis作为Session共享存储的解决方案。这是一个常见的需求,特别是在分布式系统中,为了保持用户会话的一致性,需要将Session数据在多台服务器之间共享...
标题 "Tomcat7+Redis+Session 负载之后session 共享 tomcat jar包" 涉及的是在使用Nginx做负载均衡时,如何通过集成Redis来实现Tomcat7服务器之间的Session共享,从而确保用户在不同服务器之间切换时仍然能够保持...
`session共享`成为了多台Tomcat服务器协同工作时必须解决的关键问题。本篇文章将深入探讨在Tomcat 8中通过`集群redis`实现session共享的方法。 一、session共享的重要性 在Web应用中,session是服务器端用来存储...
在现代Web应用开发中,session共享是一个至关重要的问题...总之,Spring Boot与Redis结合实现的session共享方案,不仅解决了分布式环境下的状态管理问题,还提升了系统的性能和可扩展性,是现代Web应用的一种理想选择。
本篇文章将深入探讨如何利用Redis实现Session共享,同时结合Nginx的负载均衡策略,以及Spring Boot的应用框架,构建一个高效、可靠的分布式系统。 一、Session共享的挑战与解决方案 在传统的单体应用中,Session...
`tomcat-redis-session-manager`就是这样一款解决方案,它将Tomcat的session管理与Redis相结合,实现了跨服务器的session共享。 首先,让我们理解`tomcat-redis-session-manager`的核心概念。这是一个开源项目,它...
"适配与Tomcat7、8、9的redis session共享jar包"指的是一个专为Apache Tomcat服务器设计的解决方案,用于在多台Tomcat服务器之间共享用户会话数据。这个解决方案主要依赖于Redis,一个高性能的键值存储系统,来存储...
【标题】"Tomcat7-Redis-Session共享Demo程序"是一个示例项目,它演示了如何在Tomcat7服务器上利用Redis存储和共享session数据。这个解决方案对于处理分布式系统中的session管理至关重要,尤其是在多台服务器之间...
很好用,使用也很简单,把其中的三个Jar包拷贝到你的tomcat中的...tomcat8、8.5、9与redis实现session共享,并可以通过修改源码可自定义session键,访问地址:http://blog.csdn.net/fackyou200/article/details/78929008
通过以上步骤,我们可以实现基于Redis的Session共享,提高Web应用的可扩展性和可用性。这种方式不仅解决了跨服务器的Session同步问题,还提供了Session持久化的能力,即使Tomcat重启,用户的状态也能得以保留。同时...
分布式集群中的Session共享是现代Web应用在扩展性和高可用性方面必须解决的关键问题。随着互联网应用的复杂性和用户量的增长,单个服务器往往无法满足需求,因此采用分布式部署的模式,比如多台Tomcat服务器组成的...
"tomcat-redis-session-manager"是一个解决方案,它将用户的Session信息存储在Redis缓存服务器中,从而实现跨服务器的Session共享。本篇文章将深入探讨这个话题,包括它的原理、配置以及实际应用。 **一、Session...