[redis设计与实现][14]sentinel——jedis客户端

sentinel客户端支持——jedis

简单的代码:

public class App
{  
    public static void main( String[] args )  
    {  
        Set<String> sentinels = new HashSet<String>();
        // 添加sentinel
        sentinels.add("172.18.18.207:26379");
        // 初始化基于sentinel的连接池,需要一个master的名字(用于查询这个master)
        JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);  

        // 后面使用和标准的jedis连接池相同
        Jedis jedis = pool.getResource();  

        jedis.set("jedis", "jedis");  

        pool.returnResource(jedis);  

    }
}  

JedisSentinelPool的源码在github上托管。
大致的流程:
1. 根据给定的sentinel列表和master名字,获得master信息(IP,端口)(通过sentinel master命令)
2. 启动一个线程,根据给定的sentinel列表,订阅+switch-master消息
3. 一旦发现有master切换,调用initPool方法,修改连接池使用的master

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据