96 votes

Redis set vs hash

Dans de nombreux Redis tutoriels (comme ce l'un), les données sont stockées dans un ensemble, mais avec plusieurs valeurs combinées dans une chaîne de caractères (c'est à dire un compte d'utilisateur peuvent être stockés dans l'ensemble comme deux entrées, "utilisateur:1000:nom d'utilisateur" et "utilisateur:1000:mot de passe").

Cependant, Redis a aussi des tables de hachage. Il semble qu'il serait plus judicieux d'avoir un "utilisateur:1000" de hachage, qui contient un "nom d'utilisateur" et un "mot de passe" entrée. Plutôt que de la concaténation de chaînes pour accéder à une valeur particulière, vous venez d'accéder directement dans la table de hachage.

Alors pourquoi n'est-il pas autant? Ce sont seulement les vieux tutoriels? Ou ne Redis hachages ont des problèmes de performances?

67voto

MikeG Points 2217

Redis hachages sont bonnes pour le stockage de données plus complexes, comme vous le suggérez dans votre question. Je les utilise pour exactement ce que - pour stocker des objets avec plusieurs attributs qui doivent être mis en cache (en particulier, les données de stock pour un produit particulier sur un site de e-commerce). Bien sûr, je pourrais utiliser une chaîne concaténée - mais qui ajoute de la complexité inutile à mon code client, et de mettre à jour un champ n'est pas possible.

Vous avez peut-être droit - les tutoriels sont peut-être simplement de avant de Hachages ont été introduites. Ils ont été clairement conçu pour le stockage de l'Objet de représentations: http://oldblog.antirez.com/post/redis-weekly-update-1.html

Je suppose que l'une préoccupation serait le nombre de commandes Redis doit de service lorsqu'un nouvel élément est inséré (n certain nombre de commandes, où n est le nombre de champs dans la table de Hachage) par rapport à un simple JEU de Cordes de commande. Je n'ai pas trouvé ce problème mais sur un service qui frappe Redis environ 1 million de fois par jour. À l'aide de la droite structure de données pour moi, c'est plus important qu'un nombre négligeable de l'impact sur les performances.

(Veuillez aussi voir mon commentaire concernant le Redis Jeux vs Redis Cordes, je pense que votre question se réfère à Cordes, mais corrigez-moi si je me trompe!)

62voto

Dan Gayle Points 504

Les hachages sont l'une des plus efficaces méthodes pour stocker des données dans le Redis, allant même jusqu'à recommander pour utiliser efficacement chaque fois que possible.

http://redis.io/topics/memory-optimization

L'utilisation de hachages lorsque cela est possible

Petite hachages sont encodées dans un très petit espace, de sorte que vous devriez essayer de représenter vos données à l'aide de hachages chaque fois que cela est possible. Par exemple, si vous avez des objets représentant les usagers dans une application web, au lieu d'utiliser des clés différentes pour les nom, prénom, email, mot de passe, utiliser une seule valeur de hachage avec tous les champs requis.

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