tomcat+redis实现session共享缓存

一:linux下redis安装

1.wget http://download.redis.io/releases/redis-3.2.4.tar.gz

2.tar xzf redis-3.2.4.tar.gz

3.rm -rf redis-3.2.4.tar.gz

4.cd redis-3.2.4

5.make

这个过程需要等一小会

6.cd src

7.  ./redis-server /usr/local/redis-3.2.4/redis.conf

注意:默认要在redis的src目录下启动 ./redis-server,同时最好指定redis.conf,这样redis启动就会按照指定的redis.conf配置执行

(redis.conf文件修改好后再启动,或者修改后再重启)

以上redis安装完毕

 

二:redis配置修改

vi /usr/local/redis-3.2.4/redis.conf

测试环境时将bind 127.0.0.1注释掉(前面加上#),正式环境打开。

 

为了安全起见,redis一般都是监听127.0.0.1 但是有时候又有同网段能连接的需求,当然可以绑定0.0.0.0 用iptables来控制访问权限,或者设置redis访问密码来保证数据安全  

不设置将处理所有请求,建议生产环境中设置,有个误区:bind是用来限制外网IP访问的,其实不是,限制外网ip访问可以通过iptables;如:-A INPUT -s 10.10.1.0/24 -p tcp -m state --state NEW -m tcp --dport 9966 -j ACCEPT ;  

实际上,bind ip 绑定的是redis所在服务器网卡的ip,当然127.0.0.1也是可以的  

如果绑定一个外网ip,就会报错:Creating Server TCP listening socket xxx.xxx.xxx.xxx:9966: bind: Cannot assign requested address  

bind 127.0.0.1 10.10.1.3  

# 假设绑定是以上ip,使用 netstat -anp|grep 9966 会发现,这两个ip被bind,其中10.10.1.3是服务器网卡的ip  

# tcp        0      0 10.10.1.3:9966         0.0.0.0:*                   LISTEN      11188/redis-server    

# tcp        0      0 127.0.0.1:9966         0.0.0.0:*                   LISTEN      11188/redis-server   

 

 

找到# requirepass foobared ,修改为  requirepass 123456

123456为redis密码 

 

记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化) 

appendonly yes #启用aof 持久化方式 

# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化 

appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

# appendfsync no //完全依赖os,性能最好,持久化没保证

 

# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52  ###重定义命令,例如将CONFIG命令更名为一个很复杂的名字:  

# rename-command CONFIG ""  取消这个命令;

以上两行,任意打开一个,即去掉前面的# 

 

#daemonize no  默认情况下, redis 不是在后台运行的,生成模式时一般需要在后台运行,把该项的值更改为 yes
daemonize yes

 改为yes后就看不到以下启动窗口了

 

 还要看下这篇文章:

http://www.cnblogs.com/shihaiming/p/5938191.html

 

  以上改完配置后需要重启服务

 

端口占用查看

1
netstat -tunpl | grep 6379<br><br>

redis客户端启动

 ./redis-cli -h 127.0.0.1 -p 6379

有密码时输入  auth 123456

 

或者直接输入(有密码时 -a 123456)

 ./redis-cli -h 127.0.0.1 -p 6379 -a 123456

 

keys *

可以查看redis所有的key

 

 

三:tomcat关联redis

在tomcat8.0.37版本测试可用,8.5的tomcat不能用,应该是jar包不支持,暂时还不知道怎么解决

在tomcat安装目录下的lib中放入以下jar,每个tomcat实例都要这样做。

 

 在context.xml中加入以下代码

<!-- 单点配置-->

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

 

host为redis所在服务的ip,port为redis的端口,password为redis密码,高版本的redis要设置密码,不然就会报连接池打开异常。

 

<!-- 集群配置-->

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> 
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
maxInactiveInterval="60"
password="123456"
sentinelMaster="mymaster"
sentinels="192.168.1.249:7000,192.168.1.249:7001,192.168.1.249:7002,192.168.1.248:7003,192.168.1.248:7004,192.168.1.248:7005"/>

posted @ 2016-12-30 17:19  love郎朗you  阅读(361)  评论(0编辑  收藏  举报