我们正在为我们的平台构建一个基本的推送API,并期望它每分钟推出大量的Web钩子事件(有些在数千个地方)。有可能两个相同的事件可以在彼此之间的毫秒内创建,我们希望将它们聚合在一起。
目标:
尽管如此,在一个可能有16个进程排队作业的设置中,使用Redis排序集会有用吗?
我正在考虑使用时间戳作为得分,并通过如下命令不断地“弹出”项目:
MULTI
ZRANGE queue 0 {demand - 1}
ZREMRANGEBYRANK queue 0 {demand - 1}
EXEC但我不确定表演成本或其他考虑因素。有人推荐这个吗?我觉得排序组在这里是有意义的。
发布于 2016-11-02 13:50:36
你的做法是有道理的。
ZRANGE和ZREMRANGEBYSCORE的时间复杂度是
O(log(N)+M),N是排序集中的元素数,M是返回的元素数。
这意味着这取决于事件的数量,以及您将要执行的请求。
Redis在理论上有很好的性能,但是为了确保它符合您的用例,最好是使用您的代码、您的配置、ZSET中类似产品的数量等来建立您自己的基准测试。
https://stackoverflow.com/questions/40381415
复制相似问题