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.
Mejores prácticas para clientes (Valkey y OSS Redis)
Conozca las prácticas recomendadas para situaciones comunes y siga los ejemplos de código de algunas de las bibliotecas OSS cliente 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 de las bibliotecas cliente de código abierto de Memcached más utilizadas.
Temas
- Gran cantidad de conexiones (Valkey y OSS Redis)
- Descubrimiento de clientes en clústeres y retroceso exponencial (Valkey y Redis) OSS
- Configurar un tiempo de espera del lado del cliente (Valkey y Redis) OSS
- Configurar un tiempo de espera de inactividad del lado del servidor (Valkey y Redis) OSS
- Guiones Lua
- Almacenamiento de objetos compuestos de gran tamaño (Valkey y OSS Redis)
- Configuración del cliente Lettuce (Valkey y OSS Redis)
- Configuración de un protocolo preferido para los clústeres de doble pila (Valkey y Redis) OSS
Configuración de un protocolo preferido para los clústeres de doble pila (Valkey y Redis) OSS
En el caso de los OSS clústeres Valkey o Redis habilitados para el modo de clúster, puede controlar el protocolo que utilizarán los clientes para conectarse a los nodos del clúster con el parámetro IP Discovery. El parámetro IP Discovery se puede establecer en oIPv4. IPv6
Para los OSS clústeres de Valkey o Redis, el parámetro de detección de IP establece el protocolo IP utilizado en la salida de las ranuras ()
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 si los cambios se han propagado por completo en un OSS clúster de Valkey o Redis, supervise el resultado 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; }));