是否有一个功能来维持redis中排序集的基数是一个常数



示例,我希望一个键(排序集)只存储200个元素。如果向集合中添加了一个新元素(总是带有hilicore),则应该自动删除集合中得分最低的元素,以保持已排序集合的基数不变。

不,它本身没有这样的功能,但是很容易实现。

首先,记住成员是唯一的,所以可能会有这样一种情况(除非在您的用例中不是这样),即添加一个具有新(高)分数的新成员实际上会更新现有成员的分数。因此,在每个ZADD到您的密钥之后,执行ZCARD,例如:

c = redis.zcard('key')

如果ZCARD的响应> 200,使用差值与ZREMRANGEBYRANK按秩修剪排序集:

if c > 200:
   r.zremrangebyrank('key', 0, c - 200 -1)

(顺便说一句,如果你只在a添加一个成员,上面的方法总是只删除一个[排名最低的]成员)

最新更新