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

 

  以上改完配置后需要重啟服務

 

端口占用查看

netstat -tunpl | grep 6379

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"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM