Redis单点与集群连接

本文详细介绍了如何使用Spring Data Redis进行Redis配置,包括单点、哨兵和集群模式,并展示了如何通过测试用例验证配置的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       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">

    <context:property-placeholder location="classpath:redis.properties"/>

    <!--其他配置-->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
    </bean>

    <bean id="mutableJedisClientConfiguration" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory$MutableJedisClientConfiguration">
        <property name="poolConfig" ref="poolConfig"/>
    </bean>

    <!--密码设置,redis2.x直接设置密码报错,String类型无法转化为RedisPassword-->
    <bean id="redisPassword" class="org.springframework.data.redis.connection.RedisPassword">
        <constructor-arg name="thePassword" value="${redis.password}"/>
    </bean>
	<!--单点连接-->
    <bean id="standaloneConfig" class="org.springframework.data.redis.connection.RedisStandaloneConfiguration">
        <property name="hostName" value="${redis.hostName}"/>
        <property name="port" value="${redis.port}"/>
        <property name="password" ref="redisPassword"/>
    </bean>

    <!--集群连接(1)哨兵-->
    <bean id="sentinelConfig" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
        <constructor-arg name="master" value="mastername"/>
        <constructor-arg name="sentinelHostAndPorts">
            <set>
                <value>xx.xx.xx.xxx:7001</value>
                <value>xx.xx.xx.xxx:7002</value>
                <value>xx.xx.xx.xxx:7003</value>
                <value>xx.xx.xx.xxx:7004</value>
                <value>xx.xx.xx.xxx:7005</value>
                <value>xx.xx.xx.xxx:7006</value>
            </set>
        </constructor-arg>
    </bean>

    <!--集群连接(2)集群-->
    <bean id="clusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">
        <constructor-arg>
            <list>
                <value>xx.xx.xx.xxx:7001</value>
                <value>xx.xx.xx.xxx:7002</value>
                <value>xx.xx.xx.xxx:7003</value>
                <value>xx.xx.xx.xxx:7004</value>
                <value>xx.xx.xx.xxx:7005</value>
                <value>xx.xx.xx.xxx:7006</value>
            </list>
        </constructor-arg>
        <property name="password" ref="redisPassword"/>
    </bean>


    <!--连接-->
    <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <!--哨兵连接-->
        <!--<constructor-arg name="sentinelConfig" ref="sentinelConfig"/>-->
        <!--单点连接-->
        <!--<constructor-arg name="standaloneConfig" ref="standaloneConfig"/>-->
        <constructor-arg name="clusterConfig" ref="clusterConfiguration"/>
        <constructor-arg name="clientConfig" ref="mutableJedisClientConfiguration"/>
    </bean>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <constructor-arg name="connectionFactory" ref="connectionFactory"/>
    </bean>
</beans>
  • jar包
<!-- redis包-->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.1.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
  • 测试用例
public class RedisTest {
    private StringRedisTemplate redisTemplate;
    @Before
    public void loadXML() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/redis.xml");
        redisTemplate = (StringRedisTemplate) applicationContext.getBean("redisTemplate");
    }

    @Test
    public void testRedisString() {
        ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();
        valueOperations.set("zz","ss");
        String zzValue = valueOperations.get("zz");
        System.out.println(zzValue);
        valueOperations.set("time","1");
        BoundValueOperations<String,String> boundValueOperations = redisTemplate.boundValueOps("zz");
        boundValueOperations.get();
        BoundValueOperations<String,String> boundValueOperationsTime = redisTemplate.boundValueOps("time");
        boundValueOperationsTime.increment();
        System.out.println(boundValueOperationsTime.get());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值