<!-- host="192.168.159.129" Redis位址 -->
<!-- port="6379" Redis端口 -->
<!-- password="123456" Redis密碼 -->
<!-- database="0" 存儲Session的Redis庫編号 -->
<!-- maxInactiveInterval="60" Session失效的間隔(秒) -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60" />
注: 1)Manager節點中的className屬性為必選項,其它均為可選項 2)maxInactiveInterval設定不生效,暫時找不到原因,在部署中發現Session失效的間隔一直都是讀取tomcat/conf/web.xml中的session-config節點中配置的session-timeout屬性值,且都是以秒為機關,(這個地方maxInactiveInterval好像不起作用,和web.xml中配置的session-config優先級有關?) 3、添加Tomcat-redis-session-manager的jar包到tomcat/lib目錄下,需要的jar包如下: commons-pool2-2.2.jar jedis-2.5.2.jar tomcat-redis-session-manage-tomcat7.jar
啟動Redis 下載下傳redis安裝包。解壓。 make $$ make install cd src make install 1、首先為了友善管理,将Redis檔案中的conf配置檔案和常用指令移動到統一檔案中 a)建立bin和redis.conf檔案 複制代碼 代碼如下: mkdir -p/usr/local/redis/bin mkdir -p/usr/local/redis/ect b)執行Linux檔案移動指令: 複制代碼 代碼如下: mv /lamp/redis-3.0.7/redis.conf /usr/local/redis/etc cd /lamp/redis-3.0.7/src mv mkreleasdhdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin 為了讓Redis背景運作,一般還需要修改redis.conf檔案: vi /etc/redis.conf 修改 daemonize 配置項為 yes ,使Redis程序在背景運作: daemonize yes 配置完成後,啟動Redis: # redis-server /usr/local/redis/conf/redis.conf
注: 1)GitHub中該開源元件(Tomcat-redis-session-manager)的首頁: https://github.com/jcoleman/tomcat-redis-session-manager 2)該元件目前不支援Tomcat8,我用的是Tomcat 7.0.68版本 3)在程式中将對象放到Redis裡時,該對象必須實作java.io.Serializable接口,否則将報錯,如果對象中有其它對象的引用,該引用對象也需實作java.io.Serializable接口,是以在使用request.getSession().setAttribute()方法時,一定要注意一下這一個細節。 4)因為要把Tomcat-redis-session-manager的jar包放到Tomcat/lib中,對Tomcat的部署造成了侵入,可以使用Spring Session來替代,spring-session使用攔截器重新包裝了request進而替換session實作 5)因為所有叢集的Tomcat中配置的Redis位址是一個,如果Redis崩潰了,那麼Session就不可用了,是以需要部署Redis叢集,實作故障自動切換,高可用的目标。