【问题标题】:Redis - Delete/pop if more than x members in setRedis - 如果集合中超过 x 个成员,则删除/弹出
【发布时间】:2015-06-07 18:32:30
【问题描述】:

在 Redis 中,我拥有数以百万计的集合,其中包含不同数量的成员。

我想减小整体大小,真的只需要添加到集合中的最新成员。

是否有一个操作来弹出/删除每个键的任何成员,直到总长度为 10 或更少?

【问题讨论】:

    标签: performance redis


    【解决方案1】:

    我建议使用“排序集”而不是简单集并使用ZADD,将分数设置为自纪元以来的秒数或类似的东西。然后您可以ZREMRANGEBYSCORE 进行旧物品的批量清除。

    【讨论】:

      【解决方案2】:

      使用SCARD 获取集合的大小 - 对于每个集合,您可以使用SRANDMEMBERSREM 直到集合达到所需的大小。

      Regular Sets 不跟踪插入时间,但如果您切换到 Sorted Sets,您可以将时间戳记作为分数。然后,每当您添加成员时,请检查是否已达到最大大小并根据需要删除额外的成员。用 Lua 封装它既简单又有效。

      【讨论】:

        【解决方案3】:

        看来你应该使用Capped Lists,SETs 不支持这样的功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-14
          • 2020-07-28
          • 2021-09-23
          • 2012-06-08
          • 1970-01-01
          • 1970-01-01
          • 2020-07-29
          相关资源
          最近更新 更多