Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Le migliori pratiche per i clienti (Valkey e Redis OSS)
Scopri le best practice per gli scenari più comuni e segui gli esempi di codice di alcune delle più popolari librerie client open source Valkey e Redis OSS (redis-py, phpRedis e Lettuce), nonché le migliori pratiche per interagire con le risorse delle librerie client Memcached open source di uso comune. ElastiCache
Argomenti
Individuazione e backoff esponenziale dei client del cluster (Valkey e Redis OSS)
Configurazione di un timeout lato client (Valkey e Redis OSS)
Configurazione di un timeout di inattività lato server (Valkey e Redis OSS)
Archiviazione di elementi compositi di grandi dimensioni (Valkey e Redis OSS)
Configurazione di un protocollo preferito per i cluster dual stack (Valkey e Redis OSS)
Configurazione di un protocollo preferito per i cluster dual stack (Valkey e Redis OSS)
Per i cluster Valkey o Redis OSS abilitati alla modalità cluster, è possibile controllare il protocollo che i client utilizzeranno per connettersi ai nodi del cluster con il parametro IP Discovery. Il parametro IP Discovery può essere impostato su IPv4 o IPv6.
Per i cluster Valkey o Redis OSS, il parametro IP Discovery imposta il protocollo IP utilizzato nell'output degli slot del cluster (), dei cluster shard ()
La modifica di IP Discovery non comporterà alcun tempo di inattività per i client connessi. Tuttavia, la propagazione delle modifiche richiederà tempo. Per determinare quando le modifiche si sono completamente propagate per un cluster Valkey o Redis OSS, monitora l'output di. cluster slots Dopo che tutti i nodi restituiti dal comando slot del cluster segnalano IP con il nuovo protocollo, la propagazione delle modifiche è terminata.
Esempio 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)
Esempio 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; }));