Redis
 sql >> Base de données >  >> NoSQL >> Redis

Trouver la clé par valeur

L'une des choses que vous apprenez rapidement en travaillant avec redis est que vous pouvez concevoir votre structure de données en fonction de vos besoins d'accès, en particulier en ce qui concerne les relations (ce n'est pas une base de données relationnelle après tout)

Il n'y a aucun moyen de rechercher par "valeur" avec une complexité temporelle O(1) comme vous l'avez déjà remarqué, mais il existe des moyens d'aborder ce que vous décrivez en utilisant redis. Voici ce que je recommanderais :

  • Stockez vos données utilisateur par ID utilisateur (par exemple, dans un hachage) comme vous le faites déjà.
  • Avoir un ensemble supplémentaire pour chaque identifiant de conférencier contenant tous les identifiants d'utilisateur qui correspondent à l'identifiant de conférencier en question.

Cela peut sembler dupliquer les données de la relation, puisque vos données d'utilisateur devraient stocker l'identifiant de la conférence, et vos données de conférence stockeraient les identifiants d'utilisateur, mais c'est le (minuscule) prix à payer si l'on veut construire des relations dans un non -magasin de données relationnelles comme redis. Concrètement, cela fonctionne bien; la mémoire est rarement un goulot d'étranglement pour les petits ensembles de données (pensez à des milliers d'identifiants).

Pour avoir une meilleure idée de la façon dont les gens utilisent redis pour modéliser des applications avec des relations, je recommande de lire Conception et mise en œuvre d'un simple clone Twitter et le code source de Lamernews, tous deux écrits par l'auteur de redis Salvatore Sanfilippo.