栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jedis连接redis集群并可在主从切换后自动恢复连接

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jedis连接redis集群并可在主从切换后自动恢复连接

redis cluster集群会在主节点不可达超时之后自动将从节点切换为主节点。连接到故障节点连接对象将无法使用,必须对连接对象进行检查并重新建立到新节点的连接, 连接池的poolConfig.setTestOnBorrow(true);可以在使用前做这种检查,在集群的主从切换完成后,会自动建立新连接到新的主节点。

import java.util.LinkedHashSet;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolConfigTest
{
    public static void main(String[] args)
    {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        // 最大连接数
        poolConfig.setMaxTotal(10);
        // 最大空闲数
        poolConfig.setMaxIdle(10);
        poolConfig.setMinIdle(2);
        poolConfig.setBlockWhenExhausted(true);
        poolConfig.setMaxWaitMillis(30 * 1000);
        //使用前检查连接是否正常,剔除无效连接,在主从切换后可以做到自动重连
        poolConfig.setTestOnBorrow(true);
        poolConfig.setTestOnReturn(true);
        poolConfig.setMaxWaitMillis(30 * 1000);
        poolConfig.setTimeBetweenEvictionRunsMillis(10 * 1000);
        poolConfig.setMinEvictableIdleTimeMillis(30 * 1000);
        Set nodes = new LinkedHashSet();
        nodes.add(new HostAndPort("192.168.129.112", 7002));
        nodes.add(new HostAndPort("192.168.129.112", 7003));
        nodes.add(new HostAndPort("192.168.129.113", 7005));
        nodes.add(new HostAndPort("192.168.129.113", 7004));
        nodes.add(new HostAndPort("192.168.129.111", 7007));
        nodes.add(new HostAndPort("192.168.129.111", 7006));
        JedisCluster cluster = new JedisCluster(nodes, poolConfig);
        while (true)
        {
            
            try
            {
                String name = cluster.get("name");
                System.out.println(name);
                cluster.set("age", "18");
                System.out.println(cluster.get("age"));
                
                Thread.sleep(7000);
                // cluster.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}

参数说明默认值建议
maxTotal资源池中的最大连接数8参见关键参数设置建议
maxIdle资源池允许的最大空闲连接数8参见关键参数设置建议
minIdle资源池确保的最少空闲连接数0参见关键参数设置建议
blockWhenExhausted当资源池用尽后,调用者是否要等待。只有当值为true时,下面的maxWaitMillis才会生效。true
maxWaitMillis当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)。-1(表示永不超时)不建议使用默认值。
testOnBorrow向资源池借用连接时是否做连接有效性检测(ping)。检测到的无效连接将会被移除。false业务量很大时候建议设置为false,减少一次ping的开销。
testOnReturn向资源池归还连接时是否做连接有效性检测(ping)。检测到无效连接将会被移除。false业务量很大时候建议设置为false,减少一次ping的开销。
jmxEnabled是否开启JMX监控true建议开启,请注意应用本身也需要开启。

参考:
https://blog.csdn.net/u010648555/article/details/103858684

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/975447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号