【问题标题】:comment system with redis - use lists?带有redis的评论系统 - 使用列表?
【发布时间】:2012-07-24 01:16:10
【问题描述】:

我正在我的网站上制作一个真正简单的评论系统,使用列表;

通过 LPUSH 使用评论项目的 id 完成发布。检索通过 LRANGE 完成,然后通过结果数组循环。

我想知道这是否是处理 cmets 的最佳方式?在性能层面上这是个好主意吗?

另外,我将如何进行审核?这似乎不是从列表中删除特定项目的方法。

提前致谢。

【问题讨论】:

    标签: redis


    【解决方案1】:

    如果您希望能够根据索引删除 cmets,而不是使用 LREM(根据列表项值查找和删除),您可以使用集合和哈希。

    为每个帖子保留一个简单的集合,其中包含该帖子上 cmets 的 id:

    SADD Comments:post:1 1
    SADD Comments:post:1 2
    

    (这将标记帖子 ID 1 具有 cmets ID 1 和 2)

    然后为每条评论设置一个哈希键:

    HSET Comments:1 1 "This will be a comment for post 1"
    HSET Comments:1 2 "A second comment for the same post"
    

    然后您可以查询哈希 Comments:1 以获取所有 cmets,例如帖子 ID 1:

    HGETALL Comments:1
    

    删除单个评论的方法如下:

    SREM Comments:post:1 1
    HDEL Comments:1 1
    

    (此处删除第一条评论)。

    【讨论】:

    • 您认为从性能角度来看,使用集合和哈希是否也更好?
    • 对于删除,SREM 中的O(N) 采用O(1)(例如删除1 项),而在LREM 中,N 是列表的长度。
    猜你喜欢
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2016-05-02
    • 1970-01-01
    • 2021-02-13
    • 2011-08-16
    • 2018-05-24
    相关资源
    最近更新 更多