Partition Redis
Le partitionnement est le processus de division des données en plusieurs instances Redis, de sorte que chaque instance n'enregistre qu'un sous-ensemble de clés.
Avantages du partitionnement
Nous permet de construire des bases de données plus grandes en utilisant la somme de la mémoire de plusieurs ordinateurs.
Grâce aux multicœurs et à plusieurs ordinateurs, cela nous permet d'étendre la puissance de calcul ; grâce à plusieurs ordinateurs et adaptateurs réseau, cela nous permet d'étendre la bande passante du réseau.
Inconvénients du partitionnement
Certaines fonctionnalités de redis ne fonctionnent pas très bien en termes de partitionnement :
Impliquant plusieurs clés L'opération n'est généralement pas prise en charge. Par exemple, lorsque deux ensembles sont mappés à des instances Redis différentes, vous ne pouvez pas effectuer d'opération d'intersection sur les deux ensembles.
Les transactions Redis impliquant plusieurs clés ne peuvent pas être utilisées.
Lors de l'utilisation de partitions, le traitement des données est plus complexe. Par exemple, vous devez traiter plusieurs fichiers rdb/aof et sauvegarder les fichiers persistants de plusieurs instances et hôtes.
L'ajout ou la suppression de capacité est également plus compliqué. La plupart des clusters Redis prennent en charge la possibilité d'ajouter et de supprimer des nœuds de manière transparente pour l'équilibrage des données au moment de l'exécution, mais d'autres systèmes tels que les partitions client et les proxys ne prennent pas en charge cette fonctionnalité. Cependant, une technique appelée presharding peut aider à cela.
Types de partitions
Redis dispose de deux types de partitions. Supposons qu'il existe 4 instances Redis R0, R1, R2, R3 et plusieurs clés représentant des utilisateurs tels que user:1 et user:2. Pour une clé donnée, il existe de nombreuses façons différentes de choisir dans quelle instance la clé doit être stockée. . En d’autres termes, il existe différents systèmes pour mapper une certaine clé à un certain service Redis.
Partitionnement de plage
La méthode de partitionnement la plus simple consiste à partitionner par plage, qui mappe une certaine plage d'objets à une instance Redis spécifique.
Par exemple, les utilisateurs avec des ID de 0 à 10 000 seront enregistrés dans l'instance R0, les utilisateurs avec des ID de 10 001 à 20 000 seront enregistrés dans R1, et ainsi de suite.
Cette méthode est réalisable et utilisée en pratique. L'inconvénient est qu'il existe une table de mappage de la plage à l'instance. Cette table doit être gérée et nécessite également des tables de mappage pour divers objets, ce qui n'est généralement pas une bonne méthode pour Redis.
Partitionnement par hachage
Une autre méthode de partitionnement est le partitionnement par hachage. Cela fonctionne pour n'importe quelle clé et n'a pas besoin d'être object_name :
Convertissez la clé en un nombre à l'aide d'une fonction de hachage, par exemple en utilisant la fonction de hachage crc32. L'exécution de crc32(foobar) sur la clé foobar produira un entier similaire à 93024922.
Prenez le modulo de cet entier et convertissez-le en un nombre compris entre 0 et 3. Cet entier peut être mappé à l'une des quatre instances Redis. 93024922 % 4 = 2, ce qui signifie que la clé foobar doit être stockée dans l'instance R2. Remarque : L'opération modulo consiste à supprimer le reste de la division et est généralement implémentée à l'aide de l'opérateur % dans de nombreux langages de programmation.