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

时间:2015-06-07 06:29:09

标签: performance redis

在Redis中,我拥有数百万套不同数量的成员。

我想减少整体尺寸,实际上只需要添加到一组的最新成员。

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

3 个答案:

答案 0 :(得分:1)

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

常规设置不跟踪插入时间,但如果切换到排序集,则可以将时间戳保留为分数。然后,每当您添加成员时,请检查是否已达到最大大小,并根据需要删除其他成员。在Lua中包装它是微不足道和有效的。

答案 1 :(得分:1)

我建议使用“排序集”而不是简单集并使用ZADD,将分数设置为自纪元以来类似的秒数。然后,您可以ZREMRANGEBYSCORE执行旧项目的大量删除。

答案 2 :(得分:0)

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