package test.jedis; import java.util.HashSet; import java.util.Set; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisSentinelPool; /** * 分布式redis 操作 * 没有多台机器,在同一台机器上多个redis 实例来模拟多台机器测试 * * */ public class SentinelPoolTest { @Test public void testJedis() throws InterruptedException { Set<String> sentinels = new HashSet<String>(); sentinels.add( "127.0.0.1:6377" ); sentinels.add( "127.0.0.1:6378" ); sentinels.add( "127.0.0.1:6379" ); JedisSentinelPool sentinelPool = new JedisSentinelPool( "master_test" ,sentinels); Jedis jedis = sentinelPool.getResource(); System.out.println( "current Host:" + sentinelPool.getCurrentHostMaster()); String key = "current key" ; String cacheData = jedis.get(key); if (cacheData == null ) { jedis.del(key); } jedis.set(key, "write data" ); // 写入 System.out.println(jedis.get(key)); // 读取 System.out.println( "current Host:" + sentinelPool.getCurrentHostMaster()); // down掉master,观察slave是否被提升为master jedis.set(key, "bbb" ); // 测试新master的写入 System.out.println(jedis.get(key)); // 观察读取是否正常 sentinelPool.returnResource(jedis); jedis.disconnect(); } } |