261 votes

Quel est l'intérêt de plusieurs bases de données Redis?

Donc, je suis arrivé à un endroit où je voulais segment de données que j'ai stocker dans le redis dans des bases de données distinctes comme je l'ai parfois besoin d'utiliser les touches de commande sur un type spécifique de données, et a voulu se séparer pour faire plus vite.

Si j'segment dans plusieurs bases de données, tout est encore en mono-thread, et j'ai encore de n'avoir à utiliser un seul cœur. Si je viens de lancer une autre instance de Redis sur la même case, j'arrive à utiliser une autre base. En plus de cela, je ne peux pas le nom Redis bases de données, ou de leur donner toute sorte de plus logique identifiant. Donc, tout ce qui est dit, pourquoi/quand aurais-je besoin d'utiliser plusieurs Redis bases de données, au lieu de tourner une instance supplémentaire de Redis pour chaque base de données que je veux? Et par ailleurs, pourquoi ne pas Redis essayez d'utiliser un supplément de base pour chaque base de données supplémentaire-je ajouter? Quel est l'avantage d'être à thread unique dans les bases de données?

141voto

The Real Bill Points 3138

Vous ne voulez pas utiliser plusieurs bases de données En un seul redis instance. Il est obsolète, et, comme vous l'avez remarqué, les instances multiples permet de tirer parti des processeurs multi-cœurs. Si vous utilisez la base de données de sélection, vous aurez à refactoriser lors de la mise à niveau. La surveillance et la gestion de plusieurs instances n'est pas difficile, ni douloureux.

En effet, vous obtenez beaucoup de meilleurs paramètres sur chaque db par ségrégation fondées sur l'instance. Chaque Instance aurait statistiques reflétant le segment de données, qui permettent de mieux tuning et plus réactif et précis de suivi. L'utilisation d'une version récente et de séparer vos données par exemple.

Comme Jonaton dit, ne l'utilisez pas, il a des touches de commande. Vous trouverez des performances bien meilleures si vous il suffit de créer un index de clé. Chaque fois que l'ajout d'une clé, ajoutez le nom de la clé à un ensemble. Les touches de commande n'est pas très utile, une fois mise à l'échelle, car il va prendre beaucoup de temps pour revenir.

Laissez-le modèle de l'accès à déterminer comment structurer vos données, plutôt que de stocker la façon dont vous pensez de travaux et de travailler autour de la façon d'accéder et de mâche plus tard. Vous verrez beaucoup de meilleures performances et de trouver les données de consommer de code est souvent beaucoup plus propre et plus simple.

Concernant depuis filetée, considèrent que le redis est conçu pour la vitesse et l'atomicité. Assurer les actions de modification de date dans une db n'a pas besoin d'attendre sur une autre base de données, mais si cette action est l'enregistrement dans le fichier de vidage, ou au traitement des opérations sur des esclaves? À ce stade, vous commencez à entrer dans les mauvaises herbes de la simultanéité de la programmation.

Par l'utilisation de plusieurs instances, vous tournez multi threading la complexité en messages plus simple style de passe système.

136voto

raffian Points 7210

En principe, Redis bases de données sur la même instance ne sont pas différents que les schémas de SGBDR instances de base de données.

Donc, tout ce qui est dit, pourquoi/quand aurais-je besoin d'utiliser plusieurs Redis bases de données, au lieu de tourner une instance supplémentaire de Redis pour chaque base de données que je veux?

Il y a un clair avantage de l'utilisation de redis bases de données dans le même redis instance, et que la gestion. Si vous faites tourner une instance distincte pour chaque application, et disons que vous avez 3 apps, c'est 3 redis cas, qui auront probablement besoin d'un esclave pour HA en production, ainsi que du 6 total d'instances. D'un point de vue, cela devient malpropre réel rapide parce que vous avez besoin de surveiller tous les d'eux, ne les mises à niveau et des correctifs, etc. Si vous ne prévoyez pas de surcharge redis avec haute-je/O, une seule instance d'une esclave est plus simple et plus facile à gérer, à condition qu'il réponde à vos SLA.

8voto

Jonatan Hedborg Points 3205
  1. Je ne sais pas vraiment tous les avantages d'avoir plusieurs bases de données sur une instance unique. Je suppose que c'est utile si plusieurs services utilisent la même base de données serveur(s), de sorte que vous pouvez éviter clé de collisions.

  2. Je ne recommanderais pas de construction à l'aide de l' KEYS de commande, car il est O(n) et qui n'est pas à l'échelle. De quoi êtes-vous à l'aide pour que vous puissiez réaliser d'une autre manière? Peut-être redis n'est pas le meilleur match pour vous si des fonctionnalités KEYS , c'est vital.

  3. Je pense qu'ils mentionnent les avantages d'un seul thread serveur dans leur FAQ, mais la chose principale est la simplicité - vous n'avez pas à se soucier de la simultanéité. Chaque action est bloquant, donc pas de deux choses peuvent modifier la base de données en même temps. Idéalement, vous avez une (ou plus) par les instances de base de chaque serveur, et l'utilisation constante d'un algorithme de hachage (ou un proxy) pour diviser les clés d'entre eux. Bien sûr, vous perdrez certaines fonctionnalités de la tuyauterie ne fonctionne que pour les choses sur le même serveur, sortes de devenir plus fort, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X