gpt4 book ai didi

redis - 是否有一种功能可以使 redis 中已排序集合的基数保持不变?

转载 作者:可可西里 更新时间:2023-11-01 11:21:53 25 4
gpt4 key购买 nike

例如,我想要一个键(排序集)只存储 200 个元素。如果向集合中添加新元素(始终具有高分),则应自动删除集合中得分最低的元素,保持排序集合的基数不变。

最佳答案

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

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

c = redis.zcard('key')

如果 ZCARD 的响应大于 200,则使用差值按等级修剪排序集 ZREMRANGEBYRANK :

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

(顺便说一句,如果您只在 a 中添加一个成员,则以上将始终只删除一个 [排名最低的] 成员)

关于redis - 是否有一种功能可以使 redis 中已排序集合的基数保持不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com