redis+tomcat session共享实践

Posted 夜宿山寺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis+tomcat session共享实践相关的知识,希望对你有一定的参考价值。

目前来说session共享的解决方案很多,可以让tomcat自己进行一个同步操作,但是这样视乎不太和谐,我感觉最好的办法还是用一台内存数据库来存储session,作为session共享。下面是步骤

第一步 安装redis


#解压redis
tar -zxvf redis-2.8.11.tar.gz 
cd redis-2.8.11
make
make test
#发现错误You need tcl 8.5 or newer in order to run the Redis test
#安装tcl
tar -zxvf tcl8.6.1-src.tar.gz 
cd tcl8.6.1
cd unix
./configure
make
make install
#然后继续安装redis
#在目录里面执行 make test如果成功之后继续执行
make install
#然后进入到目录里面,执行
redis-server redis.conf
#这个时候你会看到一个类似蛋糕的界面,这样就说明你安装成功了,然后ctrl +c 关掉redis 这个时候的redis是在前台执行的,我们需要把他改到后台线程里面去,之后对redis.conf文件进行修改
vi redis.conf
#修改daemonize yes---目的使进程在后台运行,然后执行启动命令
redis-server redis.conf
#如果你看到如下类容的话说明你成功了。
[root@root redis-2.8.11]# ps -ef|grep redis
root     21113     1  1 12:46 pts/1    00:00:08 /home/soft/java7/jdk1.7.0_51/bin/java -Djava.util.logging.config.file=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/endorsed -classpath /home/webServer/redis/tomcat1/apache-tomcat-7.0.47/bin/bootstrap.jar:/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/bin/tomcat-juli.jar -Dcatalina.base=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47 -Dcatalina.home=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47 -Djava.io.tmpdir=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/temp org.apache.catalina.startup.Bootstrap start
root     21195     1  0 12:53 ?        00:00:00 redis-server *:6379    
root     21200 21039  0 12:54 pts/3    00:00:00 grep redis
[root@root redis-2.8.11]# 
r注意端口是6379 ,这个端口可以在配置文件里面进行修改的,具体自己去改吧,这个时候需要下载tomcat跟redis的jar包,因为tomcat需要通过接口去掉用redis

第二步复制所需jar包

jedis-2.1.0.jar

commons-pool-1.6.jar

tomcat-redis-session-manager-1.2-tomcat-7.jar

最好使用上面给出的版本的jar包 因为版本过高可能会不支持,把这几个包复制到tomcat lib下


第三步 配置两个tomcat

然后开始配置tomcat

打开context.xml文件然后把这段代码复制上

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
         host="localhost"
         port="6379" 
         database="0" 
         maxInactiveInterval="60"/>


两个tomcat里面都必须有这段代码,然后放入一个项目进行测试即可



以上是关于redis+tomcat session共享实践的主要内容,如果未能解决你的问题,请参考以下文章

Nginx+tomcat集群使用redis共享session

redis 实践实现登录

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

Tomcat+Redis+Nginx实现session共享(Windows版)

使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享