redis+tomcat session共享

环境准备java


Reidsredis

1/ 先去官网下载源码:数据库

wget http://redis.googlecode.com/files/redis-2.4.6.tar.gztomcat

2/ 解压:tar –zxvf redis-2.4.6.tar.gz服务器

3/ 编译session

须要说明的事,redis的安装很是简单,已经有现成的Makefile文件,直接运行make命令便可。app

makejsp

make install工具

Redis 由四个可执行文件:redis-benchmark、redis-cli、redis-server、redis-stat 这四个文件,加上一个redis.conf就构成了整个redis的最终可用包。它们的做用以下:性能

redis-server:Redis服务器的daemon启动程序

redis-cli:Redis命令行操做工具。固然,你也能够用telnet根据其纯文本协议来操做

redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能

redis-stat:Redis状态检测工具,能够检测Redis当前状态参数及延迟情况

如今就能够启动redis了,redis只有一个启动参数,就是他的配置文件路径。

redis-server /etc/redis.conf

注意,默认复制过去的redis.conf文件的daemonize参数为no,因此redis不会在后台运行,这时要测试,咱们须要从新开一个终端。修改成yes则为后台运行redis。另外配置文件中规定了pid文件,log文件和数据文件的地址,若是有须要先修改,默认log信息定向到stdout.

4/ 下面是redis.conf的主要配置参数的意义:

daemonize:是否之后台daemon方式运行

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操做。在必定时间内执行必定数量的写操做时,自动保存快照。可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名(只是文件名,不包括目录)

dir:数据快照的保存目录(这个是目录)

appendonly:是否开启appendonlylog,开启的话每次写操做会记一条log,这会提升数据抗风险能力,但影响效率。

appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统本身同步)

5/ 这时你能够打开一个终端进行测试了,配置文件中默认的监听端口是6379

咱们能够开启一个Redis客户端进行测试

[zhangqi.dzq@v069197102 /usr/local/redis-3.0.6]$ src/redis-cli 

127.0.0.1:6379> 

6/ 远程java链接测试

 下载jar包

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.0.0</version>
</dependency>

上传到服务器,个人上传位置~/classpath/jedis-2.0.0.jar

编写java代码

import redis.clients.jedis.Jedis;
public class RedisJava {
   public static void main(String[] args) {
      //Connecting to Redis server on localhost
      Jedis jedis = new Jedis("100.69.197.102",6379);
      System.out.println("Connection to server sucessfully");
      //check whether server is running or not
      System.out.println("Server is running: "+jedis.ping());
 }
}

编译运行java类,成功

[root@iZ23bw4wy5uZ ~/java]#javac -cp /home/zhangqi.dzq/classpath/jedis-2.8.0.jar /home/zhangqi.dzq/jscript/RedisJava.java
[root@iZ23bw4wy5uZ ~/java]#java -cp /home/zhangqi.dzq/classpath/jedis-2.8.0.jar:/home/zhangqi.dzq/jscript RedisJava
Connection to server sucessfully
Server is running: PONG

Tomcat配置RedisSessionManager


下载配置tomcat

下载4个jar包(请注意版本,版本不合适会报异常)到tomcat的lib下

编辑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:./bin/startup.sh,查看logs/catalina.out的信息中包含如下内容,则RedisSessionManager配置生效

Jan 07, 2016 8:07:41 PM com.radiadesign.catalina.session.RedisSessionManager startInternal
INFO: Attached to RedisSessionHandlerValve
Jan 07, 2016 8:07:41 PM com.radiadesign.catalina.session.RedisSessionManager initializeSerializer
INFO: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer
Jan 07, 2016 8:07:41 PM com.radiadesign.catalina.session.RedisSessionManager startInternal
INFO: Will expire sessions after 1800 seconds


将当期tomcat目录命名为tomcat1,从新拷贝一份命名为tomcat2(同一台机器环境模拟集群的状况,须要修改server.xml下的http、ajp端口号,保证tomcat1与tomcat2端口不相同)

测试


启动redis、tomcat一、tomcat2

1 / 查看redis全部数据,能够看出为空。

[root@iZ23bw4wy5uZ ~]# redis-cli 
127.0.0.1:6379> keys *
(empty list or set)

2/ 访问tomcat1下的应用页面后

http://120.26.223.48:8080/site/login.jsp

查看redis数据,sessionId已经保存下来。

[root@iZ23bw4wy5uZ ~]# redis-cli 
127.0.0.1:6379> keys *
1) "D49AD5115560A12185DBDF372637BAD5"

3/ 访问tomcat2下的应用页面后

http://120.26.223.48:8090/site/login.jsp

查看redis数据,是同一个sessionId

[root@iZ23bw4wy5uZ ~]# redis-cli 
127.0.0.1:6379> keys *
1) "D49AD5115560A12185DBDF372637BAD5"
相关文章
相关标签/搜索