how to have relations many to many in redis -
in relational database, have user table, category table , user-category table many many relationship. what's better form of have structure in redis?
with redis, relationships typically represented sets. set can used represent one-way relationship, need 1 set per object represent many-to-many relationship.
it pretty useless try compare relational database model redis data structures. redis, stored in denormalized way.
example:
# here 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 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 many-to-many relationship # jack likes cinema , sports # john likes music , nature # julia likes cinema, music , nature # each category, keep set of reference on users > sadd category:1:users 1 3 > sadd category:2:users 2 3 > sadd category:3:users 1 > sadd category:4:users 2 3 # each user, keep set of reference on categories > sadd user:1:categories 1 3 > sadd user:2:categories 2 4 > sadd user:3:categories 1 2 4 once have data structure, easy query using set algebra:
# categories of julia > smembers user:3:categories 1) "1" 2) "2" 3) "4" # users interested music > smembers category:2:users 1) "2" 2) "3" # users interested both music , cinema > sinter category:1:users category:2:users 1) "3"
Comments
Post a Comment