redis集群搭建-集成spring记录

redis集群搭建

  • 这部分直接百度就可以
  • 注意点
 因为redis的redis.conf文件需要指定ip和端口,如果绑定了127.0.0.1时,可能非本
 机访问会有问题。
 在使用redis-trib.rb 创建集群时,也需要使用本机的ip,不要使用127.0.0.1或者
 0.0.0.0代替。

集成spring

  • 使用maven管理项目

pom.xm中依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

RedisCluster的配置:

<bean id="env"
    class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
        <list>
            <value>classpath:log4j.properties</value>
            <value>classpath:Redis.properties</value>
        </list>
        </property>
</bean>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <!--最大空闲数 -->
    <property name="maxIdle" value="#{env['redis.maxIdle']}" />
    <!--最大建立连接等待时间 -->
    <property name="maxWaitMillis" value="#{env['redis.maxWait']}" />
    <!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个 -->
    <property name="testOnBorrow" value="#{env['redis.testOnBorrow']}" />
</bean>
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
    <constructor-arg>
        <set>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="你的IP" />
                <constructor-arg name="port" value="你的PORT" />
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="你的IP" />
                <constructor-arg name="port" value="你的PORT" />
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="你的IP" />
                <constructor-arg name="port" value="你的PORT" />
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="你的IP" />
                <constructor-arg name="port" value="你的PORT" />
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="你的IP" />
                <constructor-arg name="port" value="你的PORT" />
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="你的IP" />
                <constructor-arg name="port" value="你的PORT" />
            </bean>
        </set>
    </constructor-arg>
    <constructor-arg name="connectionTimeout" value="6000" />
    <constructor-arg name="soTimeout" value="2000" />
    <constructor-arg name="maxAttempts" value="3" />
    <!-- <constructor-arg name="password" value="123456" /> -->
    <constructor-arg name="poolConfig">
        <ref bean="jedisPoolConfig" />
    </constructor-arg>
</bean>

测试代码:

    ApplicationContext ctx=new ClassPathXmlApplicationContext("application-context.xml");
    JedisCluster jc=(JedisCluster)ctx.getBean(JedisCluster.class);
    System.out.println(jc.set("name", "yucong"));
    System.out.println(jc.set("age", "28"));
    System.out.println(jc.set("sex", "男"));

    System.out.println(jc.get("name"));
    System.out.println(jc.get("age"));
    System.out.println(jc.get("sex"));
踩到的坑

在搭建redis集群时候,使用了redis-trib.rb集群创建时候,使用了0.0.0.0,使的redis cluster的slots生成的是127.0.0.1,而非本机ip:
这里写图片描述
此问题会导致哈希槽与真实的redis实例使用的是127.0.0.1地址,RedisCluster在获取真实实例ip时,拿到的是127.0.0.1而非真实的ip地址,导致连接失败!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值