Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Prácticas recomendadas para clientes (Valkey y Redis OSS)
Conozca las prácticas recomendadas para situaciones comunes y siga los ejemplos de código de algunas de las bibliotecas cliente OSS de Valkey y Redis de código abierto más populares (redis-py y Lettuce) PHPRedis, así como las mejores prácticas para interactuar con los ElastiCache recursos con las bibliotecas cliente de Memcached de código abierto más utilizadas.
Temas
Detección de clústeres por parte del cliente y retroceso exponencial (Valkey y Redis OSS)
Configuración de un tiempo de espera del cliente (Valkey y Redis OSS)
Configuración de un tiempo de espera del servidor (Valkey y Redis OSS)
Almacenamiento de elementos compuestos de gran tamaño (Valkey y Redis OSS)
Configuración de un protocolo preferido para clústeres de doble pila (Valkey y Redis OSS)
Configuración de un protocolo preferido para clústeres de doble pila (Valkey y Redis OSS)
En el caso de los clústeres de Valkey o Redis OSS habilitados para el modo de clúster, puede controlar el protocolo que los clientes utilizarán para conectarse a los nodos del clúster con el parámetro de detección de IP. El parámetro IP Discovery se puede configurar en o. IPv4 IPv6
Para los clústeres de Valkey o Redis OSS, el parámetro de detección de IP establece el protocolo IP utilizado en la salida de las ranuras del clúster ()
Cambiar la detección de IP no provocará ningún tiempo de inactividad para los clientes conectados. Sin embargo, los cambios tardarán algún tiempo en propagarse. Para determinar cuándo los cambios se han propagado por completo para un clúster de Valkey o Redis OSS, supervise la salida de cluster slots
. Una vez que todos los nodos devueltos por el comando cluster slots IPs informen sobre el nuevo protocolo, los cambios han terminado de propagarse.
Ejemplo con Redis-Py:
cluster = RedisCluster(host="xxxx", port=6379) target_type = IPv6Address # Or IPv4Address if changing to IPv4 nodes = set() while len(nodes) == 0 or not all((type(ip_address(host)) is target_type) for host in nodes): nodes = set() # This refreshes the cluster topology and will discovery any node updates. # Under the hood it calls cluster slots cluster.nodes_manager.initialize() for node in cluster.get_nodes(): nodes.add(node.host) self.logger.info(nodes) time.sleep(1)
Ejemplo con Lettuce:
RedisClusterClient clusterClient = RedisClusterClient.create(RedisURI.create("xxxx", 6379)); Class targetProtocolType = Inet6Address.class; // Or Inet4Address.class if you're switching to IPv4 Set<String> nodes; do { // Check for any changes in the cluster topology. // Under the hood this calls cluster slots clusterClient.refreshPartitions(); Set<String> nodes = new HashSet<>(); for (RedisClusterNode node : clusterClient.getPartitions().getPartitions()) { nodes.add(node.getUri().getHost()); } Thread.sleep(1000); } while (!nodes.stream().allMatch(node -> { try { return finalTargetProtocolType.isInstance(InetAddress.getByName(node)); } catch (UnknownHostException ignored) {} return false; }));