`
chun521521
  • 浏览: 277000 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

tomcat整合Redis

 
阅读更多

 

 

 

 

    1.                  关键词

 

web应用:即使用tomcat发布的web项目,本文的中以myweb为例。

 

 

 

2.    tomcat 8.x

 

 

 

§2.1   jar

 

  1. tomcat\lib

    redisson-all-3.6.4.jar

    redisson-tomcat-8-3.6.4.jar

     

  2. tomcat\webapps\myweb\WEB-INF\lib\

    commons-pool2-2.5.0.jar

           jedis-2.9.0.jar

     

 

§2.2         配置文件

 

  1. server.xml

    <Resource auth="Container" closeMethod="shutdown" configPath="${catalina.base}/conf/redisson.json" factory="org.redisson.JndiRedissonFactory" name="bean/redisson"/>

     

     

  2. context.xml

    <Manager broadcastSessionEvents="false" className="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/conf/redisson.json" readMode="REDIS" updateMode="DEFAULT" />

     

     

  3. redisson.json

    修改文件内容即可,文档可参考https://yq.aliyun.com/articles/551642/

     

    路径:tomcat\conf

    内容:

    {

       "singleServerConfig":{

          "idleConnectionTimeout":10000,

          "pingTimeout":1000,

          "connectTimeout":10000,

          "timeout":3000,

          "retryAttempts":3,

          "retryInterval":1500,

          "reconnectionTimeout":3000,

          "failedAttempts":3,

          "password":"mypass",

          "subscriptionsPerConnection":5,

          "clientName":null,

          "address": "redis://192.168.1.100:6379",

          "subscriptionConnectionMinimumIdleSize":1,

          "subscriptionConnectionPoolSize":50,

          "connectionMinimumIdleSize":32,

          "connectionPoolSize":64,

          "database":0,

          "dnsMonitoring":false,

          "dnsMonitoringInterval":5000

       },

       "threads":0,

       "nettyThreads":0,

       "codec":{

          "class":"org.redisson.codec.JsonJacksonCodec"

       },

       "transportMode":"NIO"

    }

     

     

 

§2.3         程序改造说明

 

  1. 放入session的对象需要实现序列化implements java.io.Serializable),且需要放置到attribute

  2. 操作容器对象增删改后,需要重新setattribute

     

 

§2.4   redisson序列化配置类

 

 

 

编码类名称

说明

org.redisson.codec.JsonJacksonCodec

Jackson JSON 编码默认编码

org.redisson.codec.AvroJacksonCodec

Avro 一个二进制的JSON编码

org.redisson.codec.SmileJacksonCodec

Smile 另一个二进制的JSON编码

org.redisson.codec.CborJacksonCodec

CBOR又一个二进制的JSON编码

org.redisson.codec.MsgPackJacksonCodec

MsgPack 再来一个二进制的JSON编码

org.redisson.codec.IonJacksonCodec

Amazon Ion 亚马逊的Ion编码,格式与JSON类似

org.redisson.codec.KryoCodec

Kryo 二进制对象序列化编码

org.redisson.codec.SerializationCodec

JDK序列化编码

org.redisson.codec.FstCodec

FST 10倍于JDK序列化性能而且100%兼容的编码

org.redisson.codec.LZ4Codec

LZ4 压缩型序列化对象编码

org.redisson.codec.SnappyCodec

另一个压缩型序列化对象编码

org.redisson.client.codec.JsonJacksonMapCodec

基于Jackson的映射类使用的编码。可用于避免序列化类的信息,以及用于解决使用 byte[] 遇到的问题。

org.redisson.client.codec.StringCodec

纯字符串编码(无转换)

org.redisson.client.codec.LongCodec

纯整长型数字编码(无转换)

org.redisson.client.codec.ByteArrayCodec

字节数组编码

org.redisson.codec.CompositeCodec

用来组合多种不同编码在一起

 

 

 

 

 

 

 

 

 

3.    tomcat 7.x

 

§3.1   jar

 

  1. tomcat\lib

    tomcat7-redis-session-manager-2.0.0.jar

     

  2. tomcat\webapps\myweb\WEB-INF\lib\(或tomcat\lib):

    commons-pool2-2.5.0.jar

           jedis-2.9.0.jar

     

 

§3.2   配置文件

 

  1. context.xml

    新增manager节点:

    <Value className="com.oragenfunction.tomcat.redissessions.RedisSessionHandlerValue" />

     

    <Manager className="com.oragenfunction.tomcat.redissessions.RedisSessionManager" host="192.168.1.100" port="6379" database="0" password="mypass" maxInactiveInterval="60" />

     

     

     

 

4.    spring整合(tomcat7.x

 

§4.1   jar

 

commons-pool2-2.5.0.jar

 

jedis-2.9.0.jar

 

spring-data-redis-1.5.2.RELEASE.jar

 

spring-session-1.2.0.RELEASE.jar

 

 

 

 

 

§4.2   配置文件

 

  1. applicationContext.xml

    <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">

           <property name="maxInactiveIntervalInSeconds" value="600"/>

    </bean>

          

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">

           <property name="maxTotal" value="100" />

           <property name="maxIdle" value="10" />

    </bean>

          

    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">

           <property name="hostName" value="192.168.1.100"/>

           <property name="port" value="6379"/>

           <property name="password" value="mypass" />

           <property name="timeout" value="3000"/>

           <property name="usePool" value="true"/>

           <property name="poolConfig" ref="jedisPoolConfig"/>

    </bean>

     

    注意:由于使用了这里的配置,由redis负责接管Session,原来web.xml里配置的Session超时时间就会失效了

     

     

  2. web.xml

    <!-- Spring Session Redis 共享需要放在filter的第一个 -->

    <filter>

           <filter-name>springSessionRepositoryFilter</filter-name>

           <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

    </filter>

    <filter-mapping>

           <filter-name>springSessionRepositoryFilter</filter-name>

           <url-pattern>/*</url-pattern>

    </filter-mapping>

     

    注意:这个filter要写在比较靠前的第一个的位置

     

     

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics