如何使用Jedis库建立到Redis Sentinel服务器/集群的连接?
dohp0rv51#
Jedis库是一个很棒的解决方案,但不幸的是,它的文档很糟糕。所以,
@Autowired private JedisSentinelPool pool; public void mymethod() { Jedis jedis = null; try { jedis = pool.getResource(); jedis.hset(.... } catch (JedisException je) { throw je; } finally { if (jedis != null) pool.returnResource(jedis); } }
当我使用Spring时,我需要:
<bean id="redisSentinel" class="redis.clients.jedis.JedisSentinelPool"> <constructor-arg index="0" value="mymaster" /> <constructor-arg index="1"> <set> <value>hostofsentinel:26379</value> </set> </constructor-arg> <constructor-arg index="2" ref="jedisPoolConfig"/> </bean>
5m1hhzi42#
这里有一个例子,当你没有使用Spring,需要通过Jedis简单连接到Redis sentinels管理的Redis主/从集时,
public class JedisTestSentinelEndpoint { private static final String MASTER_NAME = "mymaster"; public static final String PASSWORD = "foobared"; private static final Set sentinels; static { sentinels = new HashSet(); sentinels.add("mymaster-0.servers.example.com:26379"); sentinels.add("mymaster-1.servers.example.com:26379"); sentinels.add("mymaster-2.servers.example.com:26379"); } public JedisTestSentinelEndpoint() { } private void runTest() throws InterruptedException { JedisSentinelPool pool = new JedisSentinelPool(MASTER_NAME, sentinels); Jedis jedis = null; try { printer("Fetching connection from pool"); jedis = pool.getResource(); printer("Authenticating..."); jedis.auth(PASSWORD); printer("auth complete..."); Socket socket = jedis.getClient().getSocket(); printer("Connected to " + socket.getRemoteSocketAddress()); printer("Writing..."); jedis.set("java-key-999", "java-value-999"); printer("Reading..."); jedis.get("java-key-999"); } catch (JedisException e) { printer("Connection error of some sort!"); printer(e.getMessage()); Thread.sleep(2 * 1000); } finally { if (jedis != null) { jedis.close(); } } } ... }
Source:This blog post关于连接Redis Sentinels。
mepcadol3#
你试过Redisson吗?它提供sentinel自动主/从/sentinel发现和拓扑更新,您不需要处理连接,数据编码...都是雷迪森做的下面是代码示例:
Config config = new Config(); config.useSentinelServers() .setMasterName("mymaster") .addSentinelAddress("127.0.0.1:26389", "127.0.0.1:26379") RedissonClient redisson = Redisson.create(config); RMap<MyKey, MyValue> map = redisson.getMap("myMap"); map.put(new MyKey(), new MyValue());
3条答案
按热度按时间dohp0rv51#
Jedis库是一个很棒的解决方案,但不幸的是,它的文档很糟糕。
所以,
当我使用Spring时,我需要:
5m1hhzi42#
这里有一个例子,当你没有使用Spring,需要通过Jedis简单连接到Redis sentinels管理的Redis主/从集时,
Source:This blog post关于连接Redis Sentinels。
mepcadol3#
你试过Redisson吗?它提供sentinel自动主/从/sentinel发现和拓扑更新,您不需要处理连接,数据编码...都是雷迪森做的下面是代码示例: