Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Distributed Cache Service/ Preguntas frecuentes/ Cliente y conexión de red/ ¿Qué puedo hacer si un cliente de Lettuce 6.x es incompatible con mi instancia de DCS?
Actualización más reciente 2023-05-08 GMT+08:00

¿Qué puedo hacer si un cliente de Lettuce 6.x es incompatible con mi instancia de DCS?

Síntomas

Cuando un cliente de Lettuce 6.x se conecta a una instancia de Clúster Proxy DCS Redis 4.x/5.x, se muestra el mensaje de error "NOAUTH Authentication required".

Figura 1 Ejemplo de mensaje de error

Análisis

En Lettuce 6.x y las versiones posteriores, el comando HELLO de RESP3 (introducido en Redis 6.x) se utiliza para determinar la adaptación de la versión. Las instancias de las versiones anteriores que no admiten el comando HELLO pueden tener los problemas de compatibilidad. Para estos casos, puede especificar el modo RESP2 (compatible con las versiones 4 y 5 de Redis) en Lettuce.

Solución

Agregue el siguiente código para usar el protocolo RESP2 para acceder a 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());
    }

}