【问题标题】:Persistent Time-based Queue持久的基于时间的队列
【发布时间】:2016-08-26 19:04:19
【问题描述】:

我正在尝试实现一个基于时间的持久队列。元素被添加到队列中,并具有与之关联的特定时间。时间值表示该元素将在队列头部停留多长时间。多个客户端需要能够访问队列头部的元素,队列头部的长度以及头部后面的元素。

我可以使用的工具是 Redis 服务器和 mysql 服务器。

如果没有某种辅助服务器管理队列,这种类型的数据结构是否可行?我如何在 redis 或 mysql 中实现这个?

【问题讨论】:

    标签: mysql node.js database redis


    【解决方案1】:

    redis 的 sorted set 是可能的。您可以在排序集中继续推送您的数据。例如

    zadd queue 1 value1
    zadd queue 2 value2
    zadd queue 3 value3
    zadd queue 4 value4
    zadd queue 5 value5
    

    假设 1 到 5 是您的值(以小时为单位的时间)。现在,如果您在第 3 个小时查询,您将像这样查询。

    zrangebyscore queue 3 +inf
    

    这会让你回来

    value3,value4,value5 结果。随着时间的流逝,这不会为您提供第一个 2 值。你可以像这样设计你的队列。

    此外,为了避免排序集增长过多,您可以使用

    定期删除不需要的数据
    zremrangebyscore queue -inf that_hour-1
    

    了解排序集以了解更多http://redis.io/topics/data-types

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2018-11-14
      • 2018-01-09
      • 2012-03-08
      • 2017-06-28
      • 2011-02-21
      • 2015-11-21
      相关资源
      最近更新 更多