sql >> Base de Datos >  >> NoSQL >> Redis

Buscar clave por valor

Una de las cosas que aprende rápidamente mientras trabaja con redis es que puede diseñar su estructura de datos en torno a sus necesidades de acceso, especialmente cuando se trata de relaciones (después de todo, no es una base de datos relacional)

No hay forma de buscar por "valor" con una complejidad de tiempo O (1) como ya notó, pero hay formas de abordar lo que describe usando redis. Esto es lo que recomendaría:

  • Almacene sus datos de usuario por ID de usuario (por ejemplo, un hash) como ya lo está haciendo.
  • Tenga un conjunto adicional para cada identificación de profesor que contenga todas las identificaciones de usuario que correspondan a la identificación del profesor en cuestión.

Esto puede parecer como duplicar los datos de la relación, ya que sus datos de usuario tendrían que almacenar la identificación de la conferencia, y sus datos de la conferencia almacenarían las identificaciones de los usuarios, pero ese es el (pequeño) precio a pagar si uno va a construir relaciones en un no -almacén de datos relacionales como redis. En términos prácticos esto funciona bien; la memoria rara vez es un cuello de botella para conjuntos de datos pequeños (piense en miles de identificaciones).

Para tener una mejor idea de cómo las personas usan redis para modelar aplicaciones con relaciones, recomiendo leer Diseño e implementación de un clon simple de Twitter y el código fuente de Lamernews, ambos escritos por el autor de redis Salvatore Sanfilippo.