en una base de datos relacional, tengo una tabla de usuario, una tabla de categorías y una tabla de categoría de usuario que hacen una relación de muchos a muchos. ¿Cuál es la mejor forma de tener esta estructura en redis?cómo tener relaciones de muchos a muchos en redis
Respuesta
Con Redis, las relaciones suelen estar representadas por conjuntos. Un conjunto se puede usar para representar una relación unidireccional, por lo que necesita un conjunto por objeto para representar una relación de muchos a muchos.
Es bastante inútil intentar comparar un modelo de base de datos relacional con las estructuras de datos de Redis. Con Redis, todo se almacena de forma desnormalizada.
Ejemplo:
# Here are my categories
> hmset category:1 name cinema ... more fields ...
> hmset category:2 name music ... more fields ...
> hmset category:3 name sports ... more fields ...
> hmset category:4 name nature ... more fields ...
# Here are my users
> hmset user:1 name Jack ... more fields ...
> hmset user:2 name John ... more fields ...
> hmset user:3 name Julia ... more fields ...
# Let's establish the many-to-many relationship
# Jack likes cinema and sports
# John likes music and nature
# Julia likes cinema, music and nature
# For each category, we keep a set of reference on the users
> sadd category:1:users 1 3
> sadd category:2:users 2 3
> sadd category:3:users 1
> sadd category:4:users 2 3
# For each user, we keep a set of reference on the categories
> sadd user:1:categories 1 3
> sadd user:2:categories 2 4
> sadd user:3:categories 1 2 4
Una vez que tenemos esta estructura de datos, es fácil para consultar usando el álgebra conjunto:
# Categories of Julia
> smembers user:3:categories
1) "1"
2) "2"
3) "4"
# Users interested by music
> smembers category:2:users
1) "2"
2) "3"
# Users interested by both music and cinema
> sinter category:1:users category:2:users
1) "3"
IMHO Redis no es para realizar consultas estructuradas (SQL), pero para obtener datos rápidamente accesibles, lo que podría hacer es esto: hacer una "tabla" con user_id como clave y los datos son una lista con amigos, por ejemplo . A continuación, consulta el user_id y procesa lo que necesita. Es lo opuesto a la normalización. Si el orden de los datos es importante, por ejemplo, las actualizaciones de estado, lo que debes hacer es insertar y sacar datos en las listas. Por ejemplo, la tabla "estado" tiene user_id como clave y los datos son una lista. Usted lpush datos y luego consultar los últimos 20 elementos, por ejemplo.
- 1. relaciones muchos a muchos en JSON
- 2. Atributos en relaciones Muchos a Muchos (Hibernar)
- 3. Relaciones Muchos a Muchos en MySQL
- 4. Relaciones muchos a muchos con ServiceStack.OrmLite
- 5. Ejemplos de relaciones de muchos a muchos
- 6. Yii marco de relaciones muchos a muchos
- 7. Alternativas a las relaciones de muchos a muchos con CQRS
- 8. Relaciones genéricas de muchos a
- 9. django-tastypie y muchos a muchos "a través de" relaciones
- 10. Cómo contar relaciones uno a muchos
- 11. Relaciones de muchos a muchos de LINQ: ¿Solución?
- 12. Relaciones uno a muchos en (PostgreSQL) SQL
- 13. ¿Cómo diseñar relaciones de muchos a muchos en una base de datos de objetos?
- 14. cómo representar simétrica de muchos a muchos
- 15. ¿Cómo crear relaciones "a dos lados" de muchos a muchos en Rails?
- 16. Diferencia entre uno-a-muchos, muchos-a-uno y muchos-a-muchos?
- 17. cómo consultar muchos a muchos?
- 18. Cómo modelar las relaciones de muchos a muchos en MongoDB (para un usuario de MySQL)
- 19. ¿Cómo implementar relaciones de uno a muchos en Ibatis?
- 20. ¿Cómo trabajar con relaciones de muchos a muchos no guardados en django?
- 21. ¿Cómo creo relaciones de muchos a muchos con Objectify en Google App Engine?
- 22. ¿Cómo gestionas y utilizas las relaciones de datos centrales "Muchos a muchos"?
- 23. muchos-a-muchos y muchos-a-muchos intersecciones
- 24. Necesito ayuda con las relaciones de muchos a muchos en los datos básicos para iPhone
- 25. Relación Muchos a Muchos
- 26. Relación de muchos a muchos
- 27. Linq a Sql - Muchos a muchos - CRUD
- 28. Modelado de muchos a muchos con datos de relaciones en Google App Engine
- 29. Tabla de asignación de muchos a muchos
- 30. Cómo organizar una relación de muchos a muchos en MongoDB
Gracias! Soy nuevo en Redis y eso es muy interesante :) – starikovs
Cómo obtendremos el nombre de la categoría categoría de nombres: 2: usuarios con esto porque da el número de categoría – vaibhav