Quel est le but de clés dans les Redis côlons
-
30-09-2019 - |
Question
J'apprends comment utiliser Redis pour un projet de la mine. Une chose que je n'ai pas ma tête est autour de ce que les deux-points sont exactement les noms des clés.
Je l'ai vu de noms clés comme ceux-ci:
users:bob
color:blue
item:bag
Est-ce que les touches séparées du côlon en catégories et vous permettent de trouver les clés plus rapidement? Dans ce cas vous pouvez utiliser plusieurs clés pour nommer deux points 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 fait de nombreuses recherches Google sur la question, mais curieusement je ne trouve rien en discuter.
La solution
Les deux points ont été dans les versions antérieures de redis en tant que concept pour stocker des données d'espace de nom. Dans les premières versions Redis pris en charge uniquement des chaînes, si vous voulez stocker le courrier électronique et l'âge de « bob » vous deviez stocker tout comme une chaîne, donc utilisés côlons:
SET user:bob:email bob@example.com
SET user:bob:age 31
Ils avaient pas un traitement spécial ou des caractéristiques de performance dans Redis, le seul but était les données à l'espace de nommage trouver à nouveau. De nos jours, vous pouvez utiliser hash pour stocker la plupart des clés coloned:
HSET user:bob email bob@example.com
HSET user:bob age 31
Vous ne devez pas nommer le hachage « utilisateur: bob ». On pourrait nommer « bob », mais avec des espaces de noms le préfixe utilisateur nous savons instantanément quelles informations ce hachage devrait / pourrait avoir
Autres conseils
Colons sont une façon de structurer les clés. Ils ne sont pas interprétées par Redis en aucune façon. Vous pouvez également utiliser tout autre délimiteur que vous aimez ou pas du tout. Personnellement, je préfère /
, ce qui rend mes clés ressemblent à des chemins du système de fichiers. Ils ont aucune influence sur la performance, mais vous ne devriez pas les faire trop longtemps car Redis doit garder toutes les clés dans la mémoire.
Une bonne structure de clé est importante pour tirer parti de la puissance de la commande de tri, ce qui est des réponses à de SQL redis rejoignent.
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 clé permet SORT de rechercher les couleurs de l'utilisateur en faisant référence aux clés structurés.