web-dev-qa-db-fra.com

À quoi servent les deux-points dans les clés Redis

J'apprends à utiliser Redis pour un de mes projets. Une chose que je ne sais pas, c'est à quoi servent exactement les deux-points dans les noms des clés.

J'ai vu des noms de clés tels que ceux-ci:

users:bob
color:blue
item:bag

Les deux points séparent-ils les clés en catégories et accélèrent-ils la recherche des clés? Si oui, pouvez-vous utiliser plusieurs deux-points lors de l'attribution de noms aux clés pour les décomposer en sous-catégories? Enfin, ont-ils quelque chose à voir avec la définition de différentes bases de données au sein du serveur Redis?

J'ai lu la documentation et effectué de nombreuses recherches sur Google à ce sujet, mais curieusement, je ne trouve rien à discuter de cela.

70
Ryan

Les deux-points figuraient dans les versions redis antérieures en tant que concept de stockage des données à espace de noms. Dans les premières versions, redis ne supportait que les chaînes, si vous vouliez stocker l'e-mail et l'âge de "bob", vous deviez tout stocker sous forme de chaîne, donc les deux-points étaient utilisés:

SET user:bob:email [email protected]
SET user:bob:age 31

Ils avaient non des caractéristiques de manipulation ou de performance spéciales dans redis, le seul but était d'espacer les noms des données pour les retrouver. De nos jours, vous pouvez utiliser des hachages pour stocker la plupart des clés colonisées:

 HSET user:bob email [email protected]
 HSET user:bob age 31

Vous n'avez pas besoin de nommer le hachage "user: bob", nous pourrions le nommer "bob", mais en le nommant avec le préfixe utilisateur, nous savons instantanément quelles informations ce hachage devrait/pourrait avoir.

86
Tobias P.

Les deux points sont un moyen de structurer les clés. Ils ne sont en aucun cas interprétés par redis. Vous pouvez également utiliser tout autre délimiteur que vous aimez ou pas du tout. Personnellement, je préfère /, ce qui fait que mes clés ressemblent à des chemins d'accès au système de fichiers. Ils n'ont aucune influence sur les performances, mais vous ne devez pas les rendre trop longs car redis doit conserver toutes les clés en mémoire.

Une bonne structure de clé est importante pour tirer parti de la puissance de la commande sort, qui est la réponse de redis à la jointure de SQL.

GET user:bob:color   -> 'blue'
GET user:alice:color -> 'red'

SMEMBERS user:peter:friends -> alice, bob

SORT user:peter:friends BY NOSORT GET user:*:color   -> 'blue', 'red'

Vous pouvez voir que la structure des touches permet à SORT de rechercher les couleurs de l'utilisateur en référençant les clés structurées.

38
Fabian Jakobs