Python redis基于时间戳获取列表

时间:2016-04-20 08:28:24

标签: python redis

我正在使用一个流,并且该流以时间戳作为密钥存储数据,以便在10秒后将其读回(这是我用来发送推送通知)。我想知道是否可以在redis中查询特定范围内的时间戳列表。

例如:我有一个运行的线程,它将每10秒从redis获取一次数据。我们假设有7条新消息被放置,这意味着在10秒后我想为当时放置的消息发送7个新的推送通知(我会检查它们是否已被读取,但是那是另一个案例。)

只是想知道,我根本不熟悉redis,所以我希望有人知道。我正在使用this

1 个答案:

答案 0 :(得分:2)

您可以使用排序集,其中每个成员的分数将是unix时间戳。

要存储新讯息,请使用ZADD

ZADD myzset <timestamp> <data>

然后,要获取自给定时间以来存储的消息列表,请使用ZRANGEBYSCORE

# return the messages posted since reference_timestamp
ZRANGEBYSCORE myzset <reference_timestamp> +inf

您可以使用ZREMRANGEBYSCORE

删除邮件发送后的邮件
# delete the messages older than reference_timestamp (including those at timestamp)
ZREMRANGEBYSCORE myzset -inf <reference_timestamp>