Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Distributed Cache Service/ Perguntas frequentes/ Cliente e conexão de rede/ O que fazer se um cliente Lettuce 6.x for incompatível com minha instância de DCS?
Atualizado em 2023-12-20 GMT+08:00

O que fazer se um cliente Lettuce 6.x for incompatível com minha instância de DCS?

Sintoma

Quando um cliente Lettuce 6.x é conectado a uma instância do DCS Redis 4.x/5.x do Proxy Cluster, a mensagem de erro "NOAUTH Authentication required" é exibida.

Figura 1 Exemplo de mensagem de erro

Análise

No Lettuce 6.x e versões posteriores, o comando HELLO do RESP3 (introduzido no Redis 6.x) é usado para determinar a adaptação da versão. Instâncias de versões anteriores que não suportam o comando HELLO podem encontrar problemas de compatibilidade. Para essas instâncias, você pode especificar o modo RESP2 (compatível com as versões 4 e 5 do Redis) em Lettuce.

Solução

Adicione o seguinte código para usar o protocolo RESP2 para acessar o Redis:

package com.chinaroad.parking.config;

import io.lettuce.core.ClientOptions;
import io.lettuce.core.protocol.ProtocolVersion;
import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;

@Configuration
public class SpringConfig implements LettuceClientConfigurationBuilderCustomizer {

    @Override
    public void customize(LettuceClientConfiguration.LettuceClientConfigurationBuilder clientConfigurationBuilder) {
        // manually specifying RESP2 
        clientConfigurationBuilder.clientOptions(ClientOptions.builder()
                .protocolVersion(ProtocolVersion.RESP2)
                .build());
    }

}