从Redis集或列表中取出多个项目的有效方法是什么,保证收到的数量

时间:2018-04-20 03:46:53

标签: redis

我有列表(如果这是唯一的方法,它可以是一个集合)。我连接了许多客户端,列表将一次一个地填写在外部。

我需要一种有效的方法将 N 项目作为批处理从一个列表中取出到一个客户端中。我不关心它最终会在哪个客户端,只是推入列表的第一个 N 项最终会有一个客户端,而下一个 N 可能会结束另一个(或相同)。

我真的不确定如何通过列表实现这一点,我可以阻止pop,但一次只能阻止一个。我真的更喜欢列表中的排序。

我以为我可以使用套装,让所有客户都用SCARD击中Redis。当他们检测到count为=>时,SPOP为N.这应该让我至少有一个充满N的客户端,并且每个接收少于N的客户端都会将它们返回给该集合。

我重复SCARD的事实感觉非常糟糕,并且让事情变得不可靠。

是否有更多的东西可以支持这种流程,或者更干净的算法(理想情况下有一个列表?)

1 个答案:

答案 0 :(得分:3)

您可以将逻辑包装到Lua script中,以确保客户端获得drive.google.com个连续项。

N