按分数修剪排序集

Trimming sorted set by score

在 Django 应用程序中,我使用 redis 维护一个全局排序集,其中存储用户 ID 以及自纪元以来的当前时间分数。

每 11 分钟后,我将 运行 一个异步任务,将排序集修剪为仅在前 10 分钟内保存的值,仅此而已 .

以下是否可以做到这一点?我不确定边缘情况(例如,这会确保所有旧值都被删除还是会泄漏等):

time_now = time.time() #current time since epoch
ten_mins_ago = time_now - (10*60)
eleven_mins_ago = time_now - (11*60)
my_redis_server.zremrangebyscore(sorted_set,eleven_mins_ago,ten_mins_ago)

eleven_mins_ago 替换为字符串值 -inf 以删除超过 10 分钟的所有内容并避免任何 "leak"age。请参阅 ZRANGE 文档页面的 Exclusive intervals and infinity 部分以获取完整的详细信息和解释。