我们正在为我们的平台构建一个基本上推送的API,并期望它每分钟推出大量的Webhook事件(其中一些成千上万)。可能会在几毫秒之内创建两个相同的事件,我们希望将它们聚合在一起。
目标:
所有这些,在我们可能有16个进程排队作业的设置中,使用Redis排序集会有用吗?
我正考虑使用时间戳作为分数,并通过以下命令不断“弹出”项目:
fetchUser()
但我不确定性能成本或其他考虑因素。有人会推荐这个吗?我觉得排序集在这里有意义。
答案 0 :(得分:1)
你的方法很有意义。
ZRANGE和ZREMRANGEBYSCORE的时间复杂度为
O(log(N)+ M),其中N是有序集合中元素的数量,M是返回的元素数量。
这意味着它取决于事件的数量以及您将要执行的请求。
Redis在理论上有非常好的表现,但为了确保它适合您的使用案例,最好是使用您的代码,您的配置,ZSET中类似生产的项目数等制作您自己的基准测试,等等。