我正在尝试使用redis实现嵌套注释系统,例如每篇文章都可以将注释作为第一层注释,然后可以注释第一层注释并创建第二层注释,依此类推,可以拥有无限层.现在我使用哈希,每个键代表一篇文章,一个字段用于文章信息,一个字段用于评论,评论的值是xml格式,其中标签是嵌套为子节点的注释id.但它的效率非常低,因为每次我都试图检索评论,我必须将它们全部作为一个整体.所以我想知道是否还有其他更有效的方法来做到这一点?谢谢
我认为良好的第一步是考虑关系数据库中的这种情况.例如,一个简单的系统可以具有以下模式:
Article (
id INT,
name TEXT,
body TEXT
)
Comment (
id INT,
article_id INT,
parent INT,
author TEXT,
body TEXT
)
Run Code Online (Sandbox Code Playgroud)
将其转换为Redis需要一点思考.您希望确保您使用的数据结构是正确的,以便为您提供最快的查找时间.以下是我在实现系统时使用的不同键/键结构:
article:<id> - 存储文章信息的哈希,并具有以下键:
name - 文章的名称body - 文章的正文article-id - 商品ID的自动增量值article-comments:<id> - 一组注释ID,它们是ID为的文章的顶级注释 <id>comment:<id> - 存储评论信息并具有以下键的:
author - 评论作者body - 评论的正文comment-id - 注释ID的自动增量值comment-children:<id> - 一组注释ID,表示回复ID为的注释的注释 <id>添加新评论的步骤如下:
comment-idcomment:和值返回article-comments:<id>集合中.如果它有父项,请将其添加到适当的comment-children:<id>集合中.