【发布时间】:2015-06-07 18:32:30
【问题描述】:
在 Redis 中,我拥有数以百万计的集合,其中包含不同数量的成员。
我想减小整体大小,真的只需要添加到集合中的最新成员。
是否有一个操作来弹出/删除每个键的任何成员,直到总长度为 10 或更少?
【问题讨论】:
标签: performance redis
在 Redis 中,我拥有数以百万计的集合,其中包含不同数量的成员。
我想减小整体大小,真的只需要添加到集合中的最新成员。
是否有一个操作来弹出/删除每个键的任何成员,直到总长度为 10 或更少?
【问题讨论】:
标签: performance redis
我建议使用“排序集”而不是简单集并使用ZADD,将分数设置为自纪元以来的秒数或类似的东西。然后您可以ZREMRANGEBYSCORE 进行旧物品的批量清除。
【讨论】:
使用SCARD 获取集合的大小 - 对于每个集合,您可以使用SRANDMEMBER 和SREM 直到集合达到所需的大小。
Regular Sets 不跟踪插入时间,但如果您切换到 Sorted Sets,您可以将时间戳记作为分数。然后,每当您添加成员时,请检查是否已达到最大大小并根据需要删除额外的成员。用 Lua 封装它既简单又有效。
【讨论】:
看来你应该使用Capped Lists,SETs 不支持这样的功能。
【讨论】: