在Redis中,我拥有数百万套不同数量的成员。
我想减少整体尺寸,实际上只需要添加到一组的最新成员。
是否有操作来弹出/删除每个键的任何成员,直到总长度为10或更短?
答案 0 :(得分:1)
使用SCARD
获取Set的大小 - 对于每个集合,您可以执行SRANDMEMBER
和SREM
,直到Set达到所需的大小。
常规设置不跟踪插入时间,但如果切换到排序集,则可以将时间戳保留为分数。然后,每当您添加成员时,请检查是否已达到最大大小,并根据需要删除其他成员。在Lua中包装它是微不足道和有效的。
答案 1 :(得分:1)
我建议使用“排序集”而不是简单集并使用ZADD,将分数设置为自纪元以来类似的秒数。然后,您可以ZREMRANGEBYSCORE执行旧项目的大量删除。
答案 2 :(得分:0)
好像你应该使用Capped Lists,SETs不支持这样的功能。