我正在将基于 MySQL 的旧用户管理系统转换为 Redis,并且遇到了一些问题......
我使用 HASH 和 SET 的组合作为系统的基础。
只是一些伪代码
let uid=incr user_id_counter
hset joe@dom.com user user:uid
hset user:uid email joe#dom.com
hset user:uid gender m
hset user:uid year_of_birth 1972
hset user:uid fav_band acdc
sadd maleUsers uid
sadd born1972Users uid
此时一切都很好,我可以使用 sinter 进行搜索,例如:
sinter maleUsers born1972
or
sinter femaleUsers born1980
这是假设我为每一年的出生做一个单独的集合
sad bornXXXX uid
这是我可以忍受的 - 但我将如何处理最喜欢的乐队?当然,我不会为所有可能的乐队制作一套吗?
最终我希望能够进行详细的搜索,例如,
sinter maleUsers born1980 genreRock genreMetal homeTownSydney
有没有更复杂的方法来进行关系查询?