java spring-session之5 redis集群配置步骤总结

总结配置步骤

简单四步,开始java  spring-session redis 配置人生

1. pom.xml 添加 jar依赖


<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>


    ....


    <properties>

        <version.spring-session>1.2.2.RELEASE</version.spring-session>

        <!--不兼容 1.7.4.RELEASE -->

        <version.spring-data-redis>1.7.1.RELEASE</version.spring-data-redis>


    </properties>


    <dependencies>


        ....


        <dependency>

            <groupId>org.springframework.session</groupId>

            <artifactId>spring-session</artifactId>

            <version>${version.spring-session}</version>

        </dependency>


        <dependency>

            <groupId>org.springframework.session</groupId>

            <artifactId>spring-session-data-redis</artifactId>

            <version>${version.spring-session}</version>

        </dependency>


        <dependency>

            <groupId>org.springframework.data</groupId>

            <artifactId>spring-data-redis</artifactId>

            <version>${version.spring-data-redis}</version>

        </dependency> 


        ....


    </dependencies>


</project>


2. web.xml 添加 springSessionRepositoryFilter 配置


    <?xml version="1.0" encoding="UTF-8"?>

    <web-app version="3.0" xmlns="https://java.sun.com/xml/ns/javaee" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="https://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


        ...


        <!-- spring-session config -->

        <context-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>

                classpath*:spring-session-cluster.xml

            </param-value>

        </context-param>


        <!-- 这个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>

            <dispatcher>REQUEST</dispatcher>

            <dispatcher>ERROR</dispatcher>

        </filter-mapping>

        ...

    </web-app>


3. spring-session-cluster.xml


    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="https://www.springframework.org/schema/beans" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:context="https://www.springframework.org/schema/context"

        xmlns:p="https://www.springframework.org/schema/p" xmlns:util="https://www.springframework.org/schema/util"

        xsi:schemaLocation="https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd

            https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd

            https://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd   

            ">


        <context:annotation-config />


        <util:properties id="redis" location="classpath:redis-cluster.properties"></util:properties>


        <!-- RedisHttpSessionConfiguration -->

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


        <!--JedisConnectionFactory -->

        <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

            <constructor-arg index="0">

                <!-- since spring-data-redis 1.7 -->

                <bean class="org.springframework.data.redis.connection.RedisClusterConfiguration">

                    <constructor-arg index="0">

                        <set>

                            <value>#{redis['redis.redisClusterConfiguration.clusters']}</value>

                        </set>

                    </constructor-arg>


                    <!--

                        用于 redis.clients.jedis.JedisCluster.JedisCluster(Set<HostAndPort>, int, int, GenericObjectPoolConfig) 第三个参数 maxRedirections

                        默认值是5

                        一般当此值设置过大时,容易报:Too many Cluster redirections

                    -->

                    <property name="maxRedirects" value="#{redis['redis.redisClusterConfiguration.maxRedirects']}" />

                </bean>

            </constructor-arg>


            <constructor-arg index="1">

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

                    <property name="maxIdle" value="#{redis['redis.jedisPoolConfig.MaxIdle']}" />

                    <property name="testOnBorrow" value="#{redis['redis.jedisPoolConfig.testOnBorrow']}" />

                    <property name="testOnReturn" value="#{redis['redis.jedisPoolConfig.testOnReturn']}" />


                    <!-- 新版jedis 不支持这个参数了 -->

                    <!-- <property name="maxWait" value="#{redis['redis.jedisPoolConfig.MaxWait']}" /> -->

                    <!-- <property name="maxActive" value="#{redis['redis.jedisPoolConfig.MaxActive']}" /> -->

                </bean>

            </constructor-arg>

        </bean>


    </beans>

4. redis-cluster.properties


    #############for org.springframework.data.redis.connection.RedisClusterConfiguration###################

    #只需要配置 master

    #理论上只需要配置一个节点即可,配置多个是为了防止单个节点挂掉,

    redis.redisClusterConfiguration.clusters=10.88.21.31:10000,10.88.22.25:10000,10.88.21.31:10001


    #用于 redis.clients.jedis.JedisCluster.JedisCluster(Set<HostAndPort>, int, int, GenericObjectPoolConfig) 第三个参数 maxRedirections

    #默认值是5

    #一般当此值设置过大时,容易报:Too many Cluster redirections

    redis.redisClusterConfiguration.maxRedirects=3


    ###########for redis.clients.jedis.JedisPoolConfig##############################


    redis.jedisPoolConfig.MaxIdle=60000

    redis.jedisPoolConfig.testOnBorrow=true

    redis.jedisPoolConfig.testOnReturn=true


    #新版jedis 不支持这个参数了

    #redis.jedisPoolConfig.MaxActive=50

    #redis.jedisPoolConfig.MaxWait=5000

简单四步,开始 spring-session redis 配置人生


--to be continued


评论
热度(1)

© 牛耳教育|长沙java培训|长沙java培训学校|长沙软件培 | Powered by LOFTER