使用 Redis 建模一对多关系
Modelling a one-to-many relationship with Redis
我是 Redis 的新手,我有这个任务,我必须在给定以下实体的情况下对一对多关系进行建模:
一个人(Bob,Tom,Sam)可以接收一条或多条消息,一条消息的特点是"text" 和 "data".
我做的是这样的:
SADD Bob:messages "Bob:message:1" "Bob:message:2" "Bob:message:3"
其中 Bob:messages 是集合的键,"Bob:message:1" "Bob:message:2" 等是与 Bob 关联的消息。
消息被保存为哈希集每个哈希集代表鲍勃的一条消息:
HMSET Bob:message:1 text "Hi Bob" data "20/12/2019:13:23"
HMSET Bob:message:2 text "Give me the keys" data "20/12/2019:13:24"
HMSET Bob:message:3 text "Bye Bob" data "20/12/2019:13:25"
哈希集中的键是前一组的值。
这足以模拟一对多关系吗?
一组足以模拟一对多关系。但这并不是模拟这种关系的唯一方法。您还可以使用丢失或排序集甚至流来为这种关系建模。自然的问题是使用哪一个,答案是视情况而定。
如果按接收顺序存储消息很重要,您或许可以使用列表。如果您想阅读用户最近收到的消息,列表会很有意义。
另一方面,如果消息具有点赞或赞成票的概念,并且您想按点赞数查找消息 - 排序集会更有意义。
我是 Redis 的新手,我有这个任务,我必须在给定以下实体的情况下对一对多关系进行建模:
一个人(Bob,Tom,Sam)可以接收一条或多条消息,一条消息的特点是"text" 和 "data".
我做的是这样的:
SADD Bob:messages "Bob:message:1" "Bob:message:2" "Bob:message:3"
其中 Bob:messages 是集合的键,"Bob:message:1" "Bob:message:2" 等是与 Bob 关联的消息。
消息被保存为哈希集每个哈希集代表鲍勃的一条消息:
HMSET Bob:message:1 text "Hi Bob" data "20/12/2019:13:23"
HMSET Bob:message:2 text "Give me the keys" data "20/12/2019:13:24"
HMSET Bob:message:3 text "Bye Bob" data "20/12/2019:13:25"
哈希集中的键是前一组的值。
这足以模拟一对多关系吗?
一组足以模拟一对多关系。但这并不是模拟这种关系的唯一方法。您还可以使用丢失或排序集甚至流来为这种关系建模。自然的问题是使用哪一个,答案是视情况而定。
如果按接收顺序存储消息很重要,您或许可以使用列表。如果您想阅读用户最近收到的消息,列表会很有意义。
另一方面,如果消息具有点赞或赞成票的概念,并且您想按点赞数查找消息 - 排序集会更有意义。