zoukankan      html  css  js  c++  java
  • Spring集成Redis集群

    一、依赖介绍

    1、Spring支持Redis集群且可设置集群节点密码

            <!-- redis:支持集群&节点密码 -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>2.9.0</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>1.8.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session-data-redis</artifactId>
                <version>1.2.2.RELEASE</version>
            </dependency>

            注意:需要spring-beans设置版本为4.2.8.RELEASE,即不完全支持spring3.x版本

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.2.8.RELEASE</version>
            </dependency>

    2、Spring支持Redis集群,但无法支持节点密码

             <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>2.8.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>1.7.1.RELEASE</version>
            </dependency>
     

    二、配置文件

    1、redis-cluster.properties

    #密码
    redis.password=666666
    #缓存池最小空闲数
    redis.minIdle=5
    #缓存池最大空闲数
    redis.maxIdle=100
    #缓存池最大连接数
    redis.maxTotal=300
    #最大等待时间
    redis.maxWaitMillis=3000
    #客户端超时时间单位是毫秒
    redis.timeout=100000
    redis.maxTotal=1000
    redis.minIdle=8
    #明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
    redis.testOnBorrow=true

    #rediscluster
    #本地虚拟机 Redis
    spring.redis.cluster.nodes=192.168.74.129:7000,192.168.74.129:7001,192.168.74.129:7002,192.168.74.129:7003,192.168.74.129:7004,192.168.74.129:7005
    spring.redis.cluster.max-redirects=3
    #rediscluster

    2、spring-redis-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cache="http://www.springframework.org/schema/cache"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
            ">
        <!-- 引入配置文件 -->  
        <bean id="propertyConfigurer"  
              class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
            <property name="location" value="classpath:redis-cluster.properties" />  
        </bean>  
     
        <!-- jedis 配置-->  
        <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >  
            <!--最大空闲数-->  
            <property name="maxIdle" value="${redis.maxIdle}" />  
            <!--最大建立连接等待时间-->  
            <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />  
            <!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个-->  
            <property name="testOnBorrow" value="${redis.testOnBorrow}" />  
        </bean >  
     
        <!--配置文件加载-->  
        <bean id="resourcePropertySource" class="org.springframework.core.io.support.ResourcePropertySource">  
            <constructor-arg name="name" value="redis.properties"/>  
            <constructor-arg name="resource" value="classpath:redis-cluster.properties"/>  
        </bean>  
        <!--redisCluster配置-->  
        <bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">  
            <constructor-arg name="propertySource" ref="resourcePropertySource"/>  
        </bean>  
        <!-- redis服务器中心 -->  
        <bean id="connectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >  
           <constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>  
            <constructor-arg name="poolConfig" ref="poolConfig"/>  
            <property name="password" value="${redis.password}" />  
            <property name="timeout" value="${redis.timeout}" ></property>  
        </bean >  
        <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >  
            <property name="connectionFactory" ref="connectionFactory" />  
            <!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!!  -->  
            <property name="keySerializer" >  
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
            </property>  
            <property name="valueSerializer" >  
                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />  
            </property>  
            <property name="hashKeySerializer">  
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>  
            </property>  
            <property name="hashValueSerializer">  
                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>  
            </property>  
        </bean >  
    </beans>
  • 相关阅读:
    Translation Rule 和命中法则
    Cisco Extension Mobility配置步骤详解
    tclsh命令, cisco 快速测试工具
    136、多继承的优缺点,作为一个开发者怎么看待多继承
    135、 虚函数的内存结构,那菱形继承的虚函数内存结构呢
    134、隐式转换,如何消除隐式转换?
    133、说一下你理解的 ifdef endif代表着什么?
    132、 静态成员与普通成员的区别是什么?
    131、全局变量和static变量的区别
    130、定义和声明的区别
  • 原文地址:https://www.cnblogs.com/happy366day/p/7793721.html
Copyright © 2011-2022 走看看