首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Redis排序集作为队列

使用Redis排序集作为队列
EN

Stack Overflow用户
提问于 2016-11-02 13:40:14
回答 1查看 1.8K关注 0票数 3

我们正在为我们的平台构建一个基本的推送API,并期望它每分钟推出大量的Web钩子事件(有些在数千个地方)。有可能两个相同的事件可以在彼此之间的毫秒内创建,我们希望将它们聚合在一起。

目标:

  1. 最大限度地聚合相同的事件,这样进来的两个或更多的事件只会产生一个作业。
  2. 从创建作业的客户端中删除聚合责任。

尽管如此,在一个可能有16个进程排队作业的设置中,使用Redis排序集会有用吗?

我正在考虑使用时间戳作为得分,并通过如下命令不断地“弹出”项目:

代码语言:javascript
复制
MULTI
ZRANGE queue 0 {demand - 1}
ZREMRANGEBYRANK queue 0 {demand - 1}
EXEC

但我不确定表演成本或其他考虑因素。有人推荐这个吗?我觉得排序组在这里是有意义的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 13:50:36

你的做法是有道理的。

ZRANGE和ZREMRANGEBYSCORE的时间复杂度是

O(log(N)+M),N是排序集中的元素数,M是返回的元素数。

这意味着这取决于事件的数量,以及您将要执行的请求。

Redis在理论上有很好的性能,但是为了确保它符合您的用例,最好是使用您的代码、您的配置、ZSET中类似产品的数量等来建立您自己的基准测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40381415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档