我正在使用一个流,该流以时间戳为键存储数据,以便在 10 秒后读回(我用它来发送推送通知)。我想知道是否可以在 redis 中查询特定范围内的时间戳列表。
例如:我有一个正在运行的线程,每 10 秒就会从 Redis 获取该数据。假设放置了 7 条新消息,这意味着 10 秒后我想为当时放置的消息发送 7 条新的推送通知(我将检查它们是否已被阅读,但这是另一种情况)。
只是想知道,我对redis一点都不熟悉所以我希望有人知道。我正在使用 this
最佳答案
您可以使用排序集,其中每个成员的分数将是 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>
关于Python redis 根据时间戳获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738006/