我正在尝试使用redis实现嵌套注释系统,例如每篇文章都可以将注释作为第一层注释,然后可以注释第一层注释并创建第二层注释,依此类推,可以拥有无限层.现在我使用哈希,每个键代表一篇文章,一个字段用于文章信息,一个字段用于评论,评论的值是xml格式,其中标签是嵌套为子节点的注释id.但它的效率非常低,因为每次我都试图检索评论,我必须将它们全部作为一个整体.所以我想知道是否还有其他更有效的方法来做到这一点?谢谢
我认为良好的第一步是考虑关系数据库中的这种情况.例如,一个简单的系统可以具有以下模式:
Article ( id INT, name TEXT, body TEXT ) Comment ( id INT, article_id INT, parent INT, author TEXT, body TEXT )
将其转换为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-id
创建一个新哈希,其键是第1步中的连接comment:
和值返回
使用注释数据填写在步骤2中创建的哈希
如果注释没有父项,请将其ID添加到适当的article-comments:<id>
集合中.如果它有父项,请将其添加到适当的comment-children:<id>
集合中.