Redis - 如果集合中有超过x个成员,则删除/弹出

问题描述:

在Redis中,我拥有数百万套不同数量的成员。Redis - 如果集合中有超过x个成员,则删除/弹出

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

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

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

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

使用SCARD确实得到一个Set的大小 - 对于每个设置,您可以执行SRANDMEMBERSREM,直到Set达到所需的大小。

Regular Sets不会跟踪插入时间,但如果切换到Sorted Sets,您可以将时间戳保留为分数。然后,无论何时添加成员,请检查是否已达到最大大小,并根据需要删除额外的成员。将它包装在Lua中是微不足道的和有效的。