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 RedisOSS)
Scopri le best practice per gli scenari più comuni e segui gli esempi di codice di alcune delle più popolari librerie OSS client open source di Valkey e Redis (redis-py e Lettuce)PHPRedis, nonché le migliori pratiche per interagire con le risorse con ElastiCache le librerie client Memcached open source di uso comune.
Argomenti
- Grande numero di connessioni (Valkey e RedisOSS)
- Individuazione dei client del cluster e backoff esponenziale (Valkey e Redis) OSS
- Configurare un timeout lato client (Valkey e Redis) OSS
- Configurare un timeout di inattività sul lato server (Valkey e Redis) OSS
- Script Lua
- Archiviazione di articoli compositi di grandi dimensioni (Valkey e RedisOSS)
- Configurazione del client Lettuce (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 abilitati alla modalità OSS 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 uno o. IPv4 IPv6
Per OSS i cluster Valkey o Redis, il parametro IP Discovery imposta il protocollo IP utilizzato nell'output degli slot del cluster ()
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 OSS cluster Valkey o Redis, monitora l'output di. cluster slots
Una volta che tutti i nodi restituiti dal comando cluster slots hanno riportato il nuovo protocollo, IPs le modifiche hanno terminato la propagazione.
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; }));