美文网首页
Redis-Sentinel客户端的实现原理和使用方法

Redis-Sentinel客户端的实现原理和使用方法

作者: 宁静的猫 | 来源:发表于2019-12-06 16:00 被阅读0次

实现原理:

1、客户端遍历Sentinel节点集合,获取一个可用的Sentinel节点(可以ping通的节点)
2、调用sentinel的api,获取master节点信息

sentinel get-master-addr-by-name masterName

3、客户端获取到master信息后,执行role命令,验证其是否为真正的master
4、sentinel感知到master发生了变化后,会发布订阅到指定频道,客户端之前已经订阅了该频道,就能感知到master的变化

使用方法

private static void testSentinel(){
        String masterName = "mymaster";
        Set<String> sentinels = new HashSet<String>();
        sentinels.add("sentinel的ip和port");
        sentinels.add("sentinel的ip和port");
        sentinels.add("sentinel的ip和port");
        JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName,sentinels);

        while (true){
            Jedis jedis = null;
            try {
                jedis = jedisSentinelPool.getResource();
                int index = new Random().nextInt(10000);
                String key = "key-" + index;
                String value = "value-" + index;
                jedis.set(key, value);
                System.out.println("key:" + key + ",value:" + jedis.get(key));
                Thread.sleep(10);
            }catch (Exception e){
                System.out.println(e.getMessage());
            }finally {
                if(jedis != null){
                    jedis.close();
                }
            }
        }

相关文章

网友评论

      本文标题:Redis-Sentinel客户端的实现原理和使用方法

      本文链接:https://www.haomeiwen.com/subject/iljegctx.html