示例,我想要一个键(排序集)只存储200个元素。如果向集合中添加了一个新元素(始终使用高分),则应自动删除集合中得分最低的元素,从而保持已排序集合的基数不变。
答案 0 :(得分:1)
不,本身没有这样的功能,但它很容易实现。
首先,请记住成员是唯一的,因此可能存在某种情况(除非在您的用例中这不是这样),其中添加具有新(高)分数的新成员实际上将更新现有成绩会员。因此,在每次ZADD
到您的密钥后,请执行ZCARD
,例如:
c = redis.zcard('key')
如果ZCARD
的回复是> 200,使用差异按排名修剪排序集ZREMRANGEBYRANK
:
if c > 200:
r.zremrangebyrank('key', 0, c - 200 -1)
(顺便说一句,如果您只在一个会员中添加一个会员,则上述会员只会删除一个[排名最低的会员])