备注:项目需要由原本的单机扩容到多机服务,历史原因项目里使用session传参的地方比较多。每一处去修改session,改动量较大,回归测试麻烦,也太耗时间,于是想到用redis存储session的方案。主要是使用了开源方案:redisson
github地址:
redisson.conf 文件配置:
使用方法:
第一步:下载对应的jdk、tomcat版本jar包,一共两个,我下载的是jdk8和tomcat8的:redisson-all-3.7.0.jar、redisson-tomcat-8-3.7.0.jar
第二步:将下载好的jar包上传到tomcat的lib目录下: /usr/local/src/tomcat8/lib
第三步:在/usr/local/src/tomcat8/conf/context.xml 配置redisson.conf 文件目录
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!--
<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/redisson.conf" readMode="MEMORY" updateMode="DEFAULT"/>
-->
<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/redisson.conf" readMode="
REDIS
" updateMode="DEFAULT"/>
</Context>
备注:配置属性里的readMode和updateMode需要注意(选用redis存储session时,需要将readMode改为REDIS):
readMode
- read attributes mode. Two modes are available:
-
MEMORY
- read attributes stored in local Tomcat Session. Default mode. -
REDIS
- read directly from Redis.
updateMode
- attributes update mode. Two modes are available:
-
DEFAULT
- session attributes are stored into Redis only through setAttribute method. Default mode. -
AFTER_REQUEST
- all session attributes are stored into Redis after each request.
第四步:配置redisson需要的数据信息(参考redisson的wiki文档,我使用的单节点模式,找到相应的配置内容):
vi /usr/local/src/tomcat8/redisson.conf (context.xml里配置的
catalina.base 是tomcat的根目录)
{
"singleServerConfig":{
"idleConnectionTimeout":10000,
"pingTimeout":1000,
"connectTimeout":10000,
"timeout":3000,
"retryAttempts":3,
"retryInterval":1500,
"password":"368902***********************62",
"subscriptionsPerConnection":5,
"clientName":null,
"address": "redis://127.0.0.1:6379",
"subscriptionConnectionMinimumIdleSize":1,
"subscriptionConnectionPoolSize":50,
"connectionMinimumIdleSize":32,
"connectionPoolSize":64,
"database":0,
"dnsMonitoringInterval":5000
},
"threads":0,
"nettyThreads":0,
"codec":{
"class":"org.redisson.codec.JsonJacksonCodec"
},
"transportMode":"NIO"
}
第五步:重启tomcat后就可以看到redis里有redisson为key的session缓存数据了