web-dev-qa-db-fra.com

Redis Replication et Redis Sharding (cluster) Différence

  1. Quelqu'un sache la différence entre Redis Replication et Redis Sharding?
  2. À quoi servent-ils? Redis stocke les données dans la mémoire, comment cela affecte-t-il la réplication/le frisson?
  3. Est-il possible d'utiliser les deux ensemble?
46
Patrick

Sharding est presque l'antithèse de la réplication, mais ils sont des concepts orthogonaux et fonctionnent bien ensemble.

Sharding, également connu sous le nom de partitionnement, le fractionnement des données par clé; Alors que la réplication, aussi connu sous le miroir, est de copier toutes les données.

Sharding est utile pour augmenter les performances, ce qui réduit la charge de succès et de la mémoire sur une seule ressource. La réplication est utile pour la haute disponibilité de lectures. Si vous lisez à partir de plusieurs répliques, vous réduirez également le taux de succès sur toutes les ressources, mais l'exigence de mémoire pour toutes les ressources reste le même. Il convient de noter que, alors que vous pouvez écrire à un esclave, la réplication est master-> esclave seulement. Donc, vous ne pouvez pas l'échelle écrit de cette façon.

Supposons que vous ayez les tuples suivants: [1: Apple], [2: Banana], [3: Cherry], [4: Durian] et nous avons deux machines A et B. Avec sharding, on peut stocker des clés 2,4 sur Machine A; et les clés 1,3 sur la machine B. Avec la réplication, nous stockons les touches 1,2,3,4 sur la machine A et 1,2,3,4 sur la machine B.

Sharding est généralement mis en œuvre en effectuant un hachage cohérente sur la clé. L'exemple ci-dessus a été mis en œuvre avec la fonction de hachage suivante h (x) {return x% 2 == 0 A: B}.

Pour combiner les concepts, nous pourrions reproduire chaque tesson. Dans les cas ci-dessus, l'ensemble des données (2,4) de la machine A pourraient être reproduits sur la machine C et l'ensemble des données (1,3) de la machine B pourraient être reproduits sur la machine D.

Tout magasin valeur clé (dont Redis est seulement un exemple) supports sharding, bien que certaines fonctions transversales clés ne fonctionneront plus. Redis supports réplication hors de la boîte.

120
Alex

En mots simples, la différence fondamentale entre les deux concepts est que la faste est utilisée pour échéance écrivies pendant que la réplication est utilisée pour réduire les lectures. Comme Alex déjà mentionné, la réplication est également l'une des solutions pour atteindre HA.

Oui, ils sont tous deux généralement utilisés ensemble si vous envisagez la réplication des fragments à travers des nœuds d'un groupe.

En ce qui concerne votre troisième question, au lieu de l'option RAM-FLUSH, il est une meilleure idée d'utiliser uniquement le fichier ReDIS ANNEZ UNIQUE (AOF). En seulement un coût mineur (en termes de vitesse d'écriture), vous obtenez beaucoup plus de fiabilité de vos écritures. C'est tout à fait comme le journal binaire MySQL. Le 1 FSYNC/seconde est l'option recommandée à utiliser.

19
gshx