Redis Sharding Cluster
Redis 3 a officiellement lancé la technologie de cluster officielle, résolvant le problème du service collaboratif multi-instances Redis. Redis Cluster peut être considéré comme l'incarnation de la technologie de partage côté serveur, ce qui signifie que les valeurs clés sont raisonnablement allouées à chaque fragment d'instance selon un certain algorithme. En même temps, chaque nœud d'instance se coordonne et communique pour fournir conjointement. des prestations externes cohérentes. (Apprentissage recommandé : Tutoriel vidéo Redis)
Les services d'instances Redis multiples sont beaucoup plus complexes que les instances Redis uniques, qui impliquent des problèmes techniques tels que le positionnement, la collaboration, la tolérance aux pannes et expansion. Ici, nous introduisons une technologie légère Redis Sharding côté client.
Redis Sharding peut être considéré comme une méthode de clustering multi-instances Redis couramment utilisée dans l'industrie avant la sortie de Redis Cluster. L'idée principale est d'utiliser un algorithme de hachage pour hacher la clé des données Redis. Grâce à la fonction de hachage, une clé spécifique sera mappée à un nœud Redis spécifique. De cette façon, le client sait sur quel nœud Redis exploiter les données.
Heureusement, le pilote client java redis jedis prend déjà en charge la fonction Redis Sharding, à savoir ShardedJedis et ShardedJedisPool combinés avec le pool de cache.L'implémentation Redis Sharding de Jedis présente les caractéristiques suivantes :
Utiliser un algorithme de hachage cohérent (hachage cohérent), hacher la clé et le nom du nœud en même temps, et puis en effectuant le mappage et la correspondance, l'algorithme utilisé est MURMUR_HASH. La principale raison de l'utilisation d'un hachage cohérent au lieu d'un simple mappage modulo de type hachage est que lorsque des nœuds sont ajoutés ou réduits, le rehachage dû à la rematching ne se produira pas. Un hachage cohérent n'affecte que l'allocation de clé des nœuds adjacents et l'impact est faible. Afin d'éviter un hachage cohérent affectant uniquement les nœuds adjacents et provoquant une pression d'allocation de nœuds, ShardedJedis virtualisera 160 nœuds virtuels en fonction du nom de chaque nœud Redis (sinon, Jedis attribuera un nom de hachage par défaut). Selon le poids, les nœuds virtuels multiples de 160 peuvent également être virtualisés. L'utilisation de nœuds virtuels pour la correspondance de mappage permet de déplacer et de répartir les clés plus uniformément entre les nœuds Redis lors de l'ajout ou de la réduction de nœuds Redis, au lieu que seuls les nœuds adjacents soient affectés. ShardedJedis prend en charge le mode keyTagPattern, qui consiste à extraire une partie du keyTag pour le partitionnement. De cette façon, en nommant la clé de manière appropriée, un groupe de clés associées peut être placé dans le même nœud Redis, ce qui évite d'y accéder. données associées entre les nœuds. Très important.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!