Python redis 根据时间戳获取列表

标签 python redis

我正在使用一个流,该流以时间戳为键存储数据,以便在 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/

相关文章:

python - Python 中 % 或 .format 运算符的 C++ 等价物是什么?

ruby-on-rails - 工头立即终止

node.js - NodeJS redis 连接 session ID 在应该保持不变时重新生成

php - php 升级 pcntl_fork 后导致 "errno=32 Broken pipe"

python - 使用扩展将字节添加到字节数组时为"unicode argument without an encoding"

python - 从日期时间对象创建 64 位值

python - 如果未包含分隔符,则将字符串拆分为列表

redis - Redis 是否具有对选定键/数据的持久化能力?

javascript - 如何保证邀请码在Redis中是唯一的

python - 根据 pandas 中的另一列计算一列的平均值