Meilleures pratiques pour les clients (Valkey et RedisOSS) - Amazon ElastiCache

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Meilleures pratiques pour les clients (Valkey et RedisOSS)

Découvrez les meilleures pratiques pour les scénarios courants et suivez les exemples de code de certaines des bibliothèques OSS clientes open source Valkey et Redis les plus populaires (redis-py et Lettuce)PHPRedis, ainsi que les meilleures pratiques pour interagir avec les ElastiCache ressources des bibliothèques clientes Memcached open source couramment utilisées.

Configuration d'un protocole préféré pour les clusters à double pile (Valkey et RedisOSS)

Pour les OSS clusters Valkey ou Redis activés en mode cluster, vous pouvez contrôler le protocole que les clients utiliseront pour se connecter aux nœuds du cluster avec le paramètre IP Discovery. Le paramètre IP Discovery peut être défini sur IPv4 ouIPv6.

Pour les OSS clusters Valkey ou Redis, le paramètre de découverte IP définit le protocole IP utilisé dans les sorties des slots (), des clusters shards () et des nœuds de cluster (). Ces commandes sont utilisées par les clients pour découvrir la topologie du cluster. Les clients utilisent les commandes IPs in these pour se connecter aux autres nœuds du cluster.

La modification de la découverte d'adresses IP n'entraînera aucune interruption de service pour les clients connectés. Cependant, la propagation des modifications prendra un certain temps. Pour déterminer à quel moment les modifications se sont complètement propagées pour un OSS cluster Valkey ou Redis, surveillez la sortie de. cluster slots Une fois que tous les nœuds renvoyés par la commande cluster slots ont pris IPs connaissance du nouveau protocole, les modifications ont fini de se propager.

Exemple avec 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)

Exemple avec 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; }));