开发者社区> 琦彦> 正文

Redis集群:使用Spring和jedisCluster操作Redis集群

简介: Redis集群:使用Spring和jedisCluster操作Redis集群
+关注继续查看

jedisCluster

非Spring和jedisCluster操作Redis集群

jar包

 <!-- 指定版本号 -->
<properties>
  
    <!-- JEDIS -->
    <jedis.version>2.7.1</jedis.version>
 
</properties>
 
<!-- JEDIS -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>${jedis.version}</version>
</dependency>

测试代码

// 连接redis集群
@Test
public void testJedisCluster() {
 
    JedisPoolConfig config = new JedisPoolConfig();
    // 最大连接数
    config.setMaxTotal(30);
    // 最大连接空闲数
    config.setMaxIdle(2);
 
    //集群结点
    Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
    jedisClusterNode.add(new HostAndPort("192.168.101.3", 7001));
    jedisClusterNode.add(new HostAndPort("192.168.101.3", 7002));
    jedisClusterNode.add(new HostAndPort("192.168.101.3", 7003));
    jedisClusterNode.add(new HostAndPort("192.168.101.3", 7004));
    jedisClusterNode.add(new HostAndPort("192.168.101.3", 7005));
    jedisClusterNode.add(new HostAndPort("192.168.101.3", 7006));
    JedisCluster jc = new JedisCluster(jedisClusterNode, config);
    
    JedisCluster jcd = new JedisCluster(jedisClusterNode);
    jcd.set("name", "zhangsan");
    String value = jcd.get("name");
    System.out.println(value);
}


Spring和jedisCluster操作Redis集群

配置applicationContext.xml

没有集群密码

<!-- 连接池配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <!-- 最大连接数 -->
    <property name="maxTotal" value="30" />
    <!-- 最大空闲连接数 -->
    <property name="maxIdle" value="10" />
    <!-- 每次释放连接的最大数目 -->
    <property name="numTestsPerEvictionRun" value="1024" />
    <!-- 释放连接的扫描间隔(毫秒) -->
    <property name="timeBetweenEvictionRunsMillis" value="30000" />
    <!-- 连接最小空闲时间 -->
    <property name="minEvictableIdleTimeMillis" value="1800000" />
    <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
    <property name="softMinEvictableIdleTimeMillis" value="10000" />
    <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
    <property name="maxWaitMillis" value="1500" />
    <!-- 在获取连接的时候检查有效性, 默认false -->
    <property name="testOnBorrow" value="true" />
    <!-- 在空闲时检查有效性, 默认false -->
    <property name="testWhileIdle" value="true" />
    <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
    <property name="blockWhenExhausted" value="false" />
</bean> 
<!-- redis集群 -->
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
    <constructor-arg index="0">
        <set>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg index="0" value="192.168.101.3"></constructor-arg>
                <constructor-arg index="1" value="7001"></constructor-arg>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg index="0" value="192.168.101.3"></constructor-arg>
                <constructor-arg index="1" value="7002"></constructor-arg>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg index="0" value="192.168.101.3"></constructor-arg>
                <constructor-arg index="1" value="7003"></constructor-arg>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg index="0" value="192.168.101.3"></constructor-arg>
                <constructor-arg index="1" value="7004"></constructor-arg>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg index="0" value="192.168.101.3"></constructor-arg>
                <constructor-arg index="1" value="7005"></constructor-arg>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg index="0" value="192.168.101.3"></constructor-arg>
                <constructor-arg index="1" value="7006"></constructor-arg>
            </bean>
        </set>
    </constructor-arg>
    <constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>
</bean>


如果需要设置redis集群密码,可以这样配置

<!--配置redis集群 -->
<bean id="jedisCuster" class="redis.clients.jedis.JedisCluster">
    <constructor-arg name="jedisClusterNode">
        <!--设置集群节点 -->
        <set>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis.host}"/>
                <constructor-arg name="port" value="${redis.port1}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis.host}"/>
                <constructor-arg name="port" value="${redis.port2}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis.host}"/>
                <constructor-arg name="port" value="${redis.port3}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis.host}"/>
                <constructor-arg name="port" value="${redis.port4}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis.host}"/>
                <constructor-arg name="port" value="${redis.port5}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis.host}"/>
                <constructor-arg name="port" value="${redis.port6}"/>
            </bean>
        </set>
    </constructor-arg>
    <!--设置连接超时时间 -->
    <constructor-arg name="connectionTimeout" value="${redis.timeout}"/>
    <!--设置网络通信超时时间 -->
    <constructor-arg name="soTimeout" value="${redis.soTimeout}"/>
    <!--设置集群访问密码 -->
    <constructor-arg name="password" value="${redis.password}"/>
    <!--设置最大重试次数 -->
    <constructor-arg name="maxAttempts" value="${redis.attempts}"/>
    <!--设置jedisPool配置 -->
    <constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
</bean>


测试代码

private ApplicationContext applicationContext;
 
@Before
public void init() {
    applicationContext = new ClassPathXmlApplicationContext(
            "classpath:applicationContext.xml");
}
 
//redis集群
@Test
public void testJedisCluster() {
JedisCluster jedisCluster = (JedisCluster) applicationContext
                .getBean("jedisCluster");
        
    jedisCluster.set("name", "zhangsan");
    String value = jedisCluster.get("name");
    System.out.println(value);
}

 

 


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis Cluster集群应用与原理(上)
Redis Cluster集群应用与原理(上)
42 0
E-MapReduce的HBase集群使用Hue
E-MapReduce的HBase集群中使用Hue,方便用户访问查询数据
6764 0
RedisManager使用手册(五)-- 自定义Redis安装包
RedisManager物理机安装包的构建和Docker镜像的构建
1496 0
使用ServiceStack.Redis实现Redis数据读写
原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; ...
1517 0
阿里云MySQL云数据库和Redis6.0数据库使用体验
阿里云MySQL云数据库和Redis6.0数据库使用体验
2049 0
RedisManager使用手册(六)-- 监控功能介绍
RedisManager Monitor功能和query功能介绍,Monitor模块对Redis 集群的重要指标进行监控,如平均内存占用、客户端连接数、cache命中率,节点内存碎片等,Monitor 模块中支持查看 Config、Info、Slowlog 和查询数据功能。
1938 0
+关注
琦彦
孤独的技术是没有价值的
635
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载