【问题标题】:Python redis get list based on timestampPython redis根据时间戳获取列表
【发布时间】:2016-04-20 23:32:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: python redis


    【解决方案1】:

    您可以使用排序集,其中每个成员的分数将是 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> 
    

    【讨论】:

    • 谢谢,这正是我想要的
    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多