Question

Je suis expérimenté avec Redis, et je aime vraiment l'évolutivité qu'il apporte à la table. Cependant, je me demande comment gérer les changements aux structures de données pour un système qui est déjà en production.

Par exemple, permettez-moi de dire que je suis la collecte d'informations sur un utilisateur, et j'utiliser la user_id comme une clé, et le dumping des autres données relatives à l'utilisateur sous forme de valeurs séparées par des virgules.

user_id: name, email, etc.

Maintenant, dire après environ 100 000 dossiers, je me rends compte que je devais interroger par email - comment pourrais-je prendre maintenant un aperçu des données existantes et de créer un nouvel indice pour elle

?
Était-ce utile?

La solution

De ma compréhension de Redis, cela nécessiterait quelque chose qui Redis ne vise pas à faire. Vous auriez à boucle si tous vos enregistrements (en utilisant les touches *) puis changer l'ordre des données et faire une nouvelle clé. Personnellement, je vous conseille d'utiliser une liste au lieu d'une chaîne séparées par des virgules. Dans une liste, vous pouvez modifier l'ordre de l'intérieur Redis. Une liste Redis se présente comme suit:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

Je construis une application dans laquelle j'ai rencontré le même problème. Je l'ai résolu en ayant une liste pour l'information de tous les utilisateurs, puis une clé avec l'e-mail de l'utilisateur avec une valeur de l'identifiant de l'utilisateur. Donc, ma base de données serait quelque chose comme ceci:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

Je pourrais interroger l'ID ou le courrier électronique et toujours obtenir les informations dont je avais besoin.

Désolé que je ne pouvais pas répondre directement à votre question. Espérons simplement que cela a aidé.

Autres conseils

Utilisation csv est pas une bonne idée si vous voulez soutenir les changements. Vous devez utiliser un sérialiseur qui gère les valeurs manquantes / nouvelles si tout est une clé, ou vous pouvez utiliser un hachage Redis, ce qui vous donne des sous-clés nommés. De toute façon, vous pouvez ajouter / supprimer des champs à la seule condition étant que votre code sait quoi faire si elle lit un enregistrement sans la nouvelle valeur.

Pour permettre recherche par e-mail vous devez ajouter un index - essentiellement une clé (ou liste) pour chaque e-mail avec l'ID utilisateur comme valeur. Vous devrez remplir cet index en obtenant toutes les clés une fois, puis en vous assurant de le mettre à jour lorsque des e-mails changent.

Vous pouvez sur toutes les clés itérer et de les stocker avec un autre identifiant, mais qui est probablement plus d'ennuis que cela vaut la peine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top