Todos os produtos
Search
Central de documentação

Tair (Redis® OSS-Compatible):Conexão usando o modo compatível com Sentinel

Última atualização: Sep 24, 2026

Tair (Redis OSS-compatible) utiliza um componente proprietário de alta disponibilidade (HA) e não depende do Sentinel. No entanto, para melhorar a compatibilidade e reduzir a necessidade de alterações no código, o Tair (Redis OSS-compatible) oferece um modo compatível com Sentinel. Após ativar esse recurso, é possível conectar-se a instâncias Tair e Redis Open-Source Edition da mesma forma que em uma implantação Redis Sentinel autogerenciada.

Redis Sentinel

O Redis Sentinel oferece recursos para o Redis open-source, como monitoramento de nós master e réplica, notificações de falha e failover automático. Muitas aplicações de alta confiabilidade que utilizam um banco de dados Redis autogerenciado dependem do Sentinel. Para simplificar a migração desses bancos de dados para a cloud, a Alibaba Cloud desenvolveu o modo compatível com Sentinel. Após ativar esse modo, você pode usar os comandos Sentinel a seguir. Nesses comandos, o nome do master deve ser definido como redis_master.

Comando

Descrição

SENTINEL sentinels

Retorna informações sobre as instâncias Sentinel que monitoram um master especificado. Uso:

SENTINEL sentinels redis_master

SENTINEL get-master-addr-by-name

Retorna o endereço IP e a porta de um master especificado. Uso:

SENTINEL get-master-addr-by-name redis_master

Para obter mais informações sobre o suporte a comandos Sentinel em diferentes versões, consulte Redis Open-Source Edition command support.

Pré-requisitos

  • O Sentinel-compatible mode está ativado.

  • O endereço IP do cliente — como o endereço IP interno de uma instância ECS ou o endereço IP público de um host local — está na IP whitelist da instância.

Exemplos de conexão

Após ativar o modo compatível com Sentinel, é possível conectar-se à instância com ou sem senha. A senha não é necessária quando o acesso sem senha está ativado para a instância dentro de uma VPC. Caso contrário, forneça as credenciais de autenticação.

Conexão sem senha

Nota

Para obter mais informações sobre como ativar o acesso sem senha em uma VPC, consulte Enable password-free access in a VPC.

O código a seguir demonstra como conectar-se a uma instância usando o modo compatível com Sentinel sem senha.

Spring Data Redis

Este exemplo usa Spring Data Redis 2.4.2.

    @Bean
    public JedisConnectionFactory connectionFactory() {
        RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
                .master("redis_master")
                .sentinel("r-bp10noxlhcoim2****.redis.rds.aliyuncs.com", 6379);
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        ...
        JedisConnectionFactory connectionFactory = new JedisConnectionFactory(sentinelConfig, poolConfig);
        return connectionFactory;
    }

Parâmetros:

  • master: O nome do master. Deve ser definido como redis_master.

  • sentinel: O endpoint VPC e o número de porta da instância, separados por vírgula (,), como "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com", 6379.

redis-py

Este exemplo usa Python 3.9 e redis-py 4.3.6.

from redis.sentinel import Sentinel
SENTINEL_HOST = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com"
SENTINEL_PORT = 6379
SENTINEL_MASTER_NAME = "redis_master"

sentinel = Sentinel([(SENTINEL_HOST, SENTINEL_PORT)])
r = sentinel.master_for(SENTINEL_MASTER_NAME, db=0)
r.set('foo', 'bar')
print(r.get('foo'))

Parâmetros:

  • SENTINEL_HOST e SENTINEL_PORT: O endpoint VPC e o número de porta da instância.

  • SENTINEL_MASTER_NAME: O nome do master. Deve ser definido como redis_master.

Conexão com senha

O código a seguir demonstra como conectar-se a uma instância usando o modo compatível com Sentinel com senha.

Java

Este exemplo utiliza as versões mínimas de cliente necessárias. Os clientes devem atender aos seguintes requisitos de versão:

  • Jedis 3.10.0 ou posterior.

  • Lettuce 6.3.0.RELEASE ou posterior.

  • Spring Data Redis 2.5.1 ou posterior. Configure também o parâmetro spring.redis.sentinel.password.

Nota

Recomenda-se fortemente atualizar o cliente para a versão estável mais recente. Para localizá-la, pesquise no MVN Repository.

Jedis

        String masterName = "redis_master";
        Set<String> sentinels = new HashSet<>();
        sentinels.add("r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379");
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        String dbPassword = "testaccount:Rp829dlwa";
        String sentinelPassword = "testaccount:Rp829dlwa";
        JedisSentinelPool jedisSentinelPool =
                new JedisSentinelPool(masterName, sentinels, poolConfig,
                        2000, 2000, dbPassword,
                        0, null, 2000, 2000,
                        sentinelPassword, null);

Lettuce

    String masterName = "redis_master";
    String sentinelNodes = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379";
    String sentinelPassword = "testaccount:Rp829dlwa";
    RedisURI redisURI = RedisURI.create("redis-sentinel://" + sentinelPassword + "@" + sentinelNodes + "#" + masterName);
    redisURI.getSentinels().forEach(it -> it.setPassword(sentinelPassword));
    RedisClient client = RedisClient.create(redisURI);
    RedisCommands<String, String> sync = client.connect().sync();
    System.out.println(sync.set("key", "value"));
    System.out.println(sync.get("key"));
    client.close();

Parâmetros:

  • masterName: O nome do master. Deve ser definido como redis_master.

  • sentinels.add/sentinelNodes: O endpoint VPC e o número de porta da instância, no formato r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379.

  • dbPassword e sentinelPassword: A senha da conta da instância. Caso tenha esquecido a senha, redefina-a. Para obter mais informações, consulte Change or reset the password.

    Nota
    • Para uma conta padrão, em que o nome de usuário é igual ao ID da instância, insira apenas a senha.

    • Para uma conta recém-criada, use o formato <user>:<password>. Esse formato também é compatível com a conta padrão. Por exemplo, se o nome de usuário for testaccount e a senha for Rp829dlwa, insira testaccount:Rp829dlwa.

redis-py

Este exemplo usa Python 3.9 e redis-py 4.3.6.

from redis.sentinel import Sentinel
SENTINEL_HOST = "r-bp10noxlhcoim2****.rds.aliyuncs.com"
SENTINEL_PORT = 6379
SENTINEL_MASTER_NAME = "redis_master"  # Note: This name cannot be changed.
SENTINEL_REDIS_PWD = "testaccount:Rp829dlwa"

conf = {
    'password': SENTINEL_REDIS_PWD,
}

sentinel = Sentinel([(SENTINEL_HOST, SENTINEL_PORT)], sentinel_kwargs=conf)
r = sentinel.master_for(SENTINEL_MASTER_NAME, db=0, **conf)
r.set('foo', 'bar')
print(r.get('foo'))

Parâmetros:

  • SENTINEL_HOST e SENTINEL_PORT: O endpoint VPC e o número de porta da instância.

  • SENTINEL_MASTER_NAME: O nome do master. Deve ser definido como redis_master.

  • SENTINEL_REDIS_PWD: A senha da conta da instância.

FAQ

  • P: O que fazer ao receber o erro NOAUTH Authentication required após migrar de uma implantação Redis Sentinel autogerenciada para o modo compatível com Sentinel?

    R: Ative o parâmetro #no_loose_sentinel-password-free-access definindo-o como yes. Isso permite conexões Sentinel sem senha via endpoint VPC sem precisar ativar o recurso global de acesso sem senha na VPC.

    Se a instância executar uma versão do Redis anterior à 6.0, atualize o cliente e modifique o código para incluir a senha de autenticação do Sentinel e tente novamente. Para obter mais informações, consulte Conexão com senha neste tópico.

  • P: Por que recebo o erro Unknown sentinel subcommand 'MASTERS'?

    R: Esse erro ocorre porque a versão secundária da instância não oferece suporte ao comando SENTINEL MASTERS. Update the minor version e tente novamente.

  • P: As instâncias Redis Open-Source Edition são compatíveis com o modo compatível com Sentinel?

    R: Sim.