redis中的时间限制列表

时间:2016-09-22 18:53:44

标签: redis

通过以所需大小执行ltrim,可以轻松地在具有固定大小的redis中执行列表。但是,如何维护包含时间限制而非大小限制的数据的列表。

E.g。我如何维护在过去10分钟内登录我网站的所有user_ids的列表?请提供最有效的方法来说明这一点。也许我用错误的数据类型接近这个?

1 个答案:

答案 0 :(得分:2)

只使用排序集而不是列表。使用unix时间戳作为项目的分数。

在Zset中添加项目: ZADD myzet <current timestamp> item

要检索最近十分钟的项目,请按插入时间排序,先排除旧项目: ZRANGEBYSCORE myzset (<current timestamp - 600 seconds> (+inf

使用ZRANGEBYSCORE获取最新的第一个替换ZREVRANGEBYSCORE

删除过期的项目:

ZREMRANGEBYSCORE -inf (<current timestamp - 600 seconds>