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.
Bonnes pratiques pour les clients (Valkey et Redis OSS)
Découvrez les meilleures pratiques pour les scénarios courants et suivez les exemples de code de certaines des bibliothèques clientes open source Valkey et Redis OSS 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.
Rubriques
Découverte des clients du cluster et ralentissement exponentiel (Valkey et Redis OSS)
Configurer un délai d'expiration côté client (Valkey et Redis OSS)
Configurer un délai d'inactivité côté serveur (Valkey et Redis OSS)
Stockage d'objets composites de grande taille (Valkey et Redis OSS)
Configuration d'un protocole préféré pour les clusters à double pile (Valkey et Redis OSS)
Configuration d'un protocole préféré pour les clusters à double pile (Valkey et Redis OSS)
Pour les clusters Valkey ou Redis OSS 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 ou IPv6.
Pour les clusters Valkey ou Redis OSS, le paramètre de découverte IP définit le protocole IP utilisé dans les sorties des slots ()
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 cluster Valkey ou Redis OSS, 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; }));