阿里云数据库Redis版如何开启sentinel兼容模式

许多用户自建的Redis使用了sentinel来做高可用,因此也使用了支持sentinel的客户端,为了方便用户上云,阿里云Redis也开发了sentinel兼容模式以适应各种业务场景。

【注】:此处的sentinel兼容模式仅针对客户端而言,是为了让业务代码尽量少改动的情况下可以顺利迁移上云,阿里云Redis使用自研的高可用HA组件。

下面是阿里云Redis sentinel兼容模式的使用教程。

开启sentinel兼容模式

开启的入口在控制台【参数设置】处。

【注】:2.8版本暂不支持sentinel兼容模式。

阿里云数据库Redis版如何开启sentinel兼容模式

在控制台【参数设置】处将#no_loose_sentinel-enabled参数修改为yes即可。

如果发现自己的4.0实例不支持sentinel兼容模式,可以做小版本升级。

【注】:由于社区sentinel无需密码验证环节,所以一般支持sentinel的客户端也没有auth这一过程,而云Redis是由Redis本身来兼容sentinel模式,故密码验证无法省略,所以目前仅在VPC免密的情况下客户端才能访问Redis,VPC免密开启如下图:

阿里云数据库Redis版如何开启sentinel兼容模式

sentinel兼容模式使用

关于客户端是如何支持sentinel的不再赘述,有兴趣可以Google或百度。

以JedisSentinelPool为例,假设我们现在有一个实例helloworld.redis.rds.aliyuncs.com,密码为abcd,并且已开启sentinel兼容模式,配置如下即可。

Set<String> sentinels = new HashSet<String>();
//此处填写云Redis实例地址
sentinels.add("helloworld.redis.rds.aliyuncs.com:6379");
//masterName可以是任意字符串
JedisSentinelPool pool  = new JedisSentinelPool("mymaster", sentinels, "abcd");
Jedis myjedis = pool.getResource();
myjedis.set("key", "value");
myjedis.get("key");

OK,现在就可以愉快的使用了。

【注】:sentinel的核心其实就是客户端向sentinel询问redis的地址,阿里云Redis的sentinel兼容模式实现也是如此,Redis伪装成sentinel告诉客户端自己的地址,而且Redis是不知道其他Redis地址的,也无法通过masterName来区分不同的Redis,所以地址一定要填写正确。

上一篇:Redis 5.0新功能介绍


下一篇:百晓生拍了拍你说:快来领AirPods和kindle