我目前有一个正在运行的Redis应用程序,我想添加Redis Sentinel配置,以确保我的数据库的高可用性。有人能帮我在Micronaut中配置Redis Sentinel吗?
Application.yml文件:
redis:
uri: redis-sentinel://localhost:26379,localhost:26380,localhost:26381/0#redismaster
字符串
我的主代码文件:
public class MyRedisRepository {
private final RedisClient client;
@Inject
public MyRedisRepository (RedisClient client) {
this.client = client;
}
public void save(String message) {
StatefulRedisConnection<String, String> connection = client.connect();
try {
connection.sync().set("my-key", message);
if (connection.sync().exec().wasDiscarded()) {
log.error("While trying to save message Redis transaction has been discarded.");
}
} catch (Exception exc) {
log.error("Exception occurred while saving message. Transaction discarded: {}", connection.sync().discard(), exc);
}
}
}
型
在Docker中,我运行:
- 3个Sentinel节点(172.21.0.4,172.21.0.5,172.21.0.7)
- 1 Redis主节点(172.21.0.2)
- 1 Redis从节点172.21.0.3)
不幸的是,我的应用程序并没有像预期的那样工作,并且抛出了一个错误:
Error starting Micronaut server: Unable to connect to 172.21.0.2:6379
型
其中172.21.0.2
是IP Redis主Contatainer
我该如何解决这个问题?
2条答案
按热度按时间ebdffaop1#
你找到解决Micronaut和Sentinel的办法了吗?因为我有同样的问题和错误
8xiog9wr2#
不幸的是,只有在迁移到Kubernetes并将库更改为Jedis(允许使用证书)之后,我才设法建立了连接。