【问题标题】:Redis delete item in sorted setRedis删除排序集中的项目
【发布时间】:2014-06-25 20:26:47
【问题描述】:

我正在使用 Redis 在我的类似于 Instagram/facebook 的社交网络应用程序中实现“提要”系统。

我有一个键 "user:id:feed",其中包含一组排序的 id 指向图片。我想知道的是,当删除特定照片时,如何确保在包含该照片 ID 的所有提要中也删除该照片 ID?

我是否必须遍历每个提要集并将其删除?这是redis中的常见模式吗?

谢谢

【问题讨论】:

    标签: redis


    【解决方案1】:

    Redis 中的常见模式是交叉引用各种数据结构中的项目。您必须明确地执行此操作(Redis 没有自动参照完整性机制)。

    在这里,供稿和照片之间存在多对多关系。如果您需要添加/删除提要和照片,您可能需要使用 2 个不同的数据结构来实现这种关系。

    user:id:feed  ->  sorted sets of photo:n (referring to photos)
    photo:n       ->  set of user:id:feed (referring to feeds)
    

    因此,您可以有效地从提要中检索照片,并从照片中检索提要。例如删除照片:

    • 从照片中检索提要:n
    • 管道几个 ZREM 操作(每个用户一个:id::feed)

    所以删除操作最终要花费两次往返。您可以使用 Lua 服务器端脚本将往返次数减少到 1。

    【讨论】:

      【解决方案2】:

      我的两分钱:

      使用 MongoDB 来实现这种提要结构更合适,因为它也可以在嵌套结构中处理基于 id 的数据操作。您可以将用户的所有相关信息保存在一行中,然后一次调用即可检索和删除。

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 2012-03-20
        • 2012-06-26
        • 1970-01-01
        • 2019-09-12
        • 2017-01-08
        相关资源
        最近更新 更多