Redis-一个请求中多次弹出的可靠队列模式

时间:2018-09-02 18:50:33

标签: redis

我已经使用BRPOPLPUSH实现了Redis's reliable queue pattern,因为我想避免轮询。

但是,这将导致每个项目的网络请求。我该如何扩充它,以便工作者BRPOPLPUSH一次输入多个条目?

1 个答案:

答案 0 :(得分:0)

虽然image.onload阻止了BRPOPLPUSHRPOPLSPUSH的版本,但是由于LUA执行的性质,您不能t handle multiple entries. Also you can为此目的使用LUA:服务器将因新的请求而被阻止在LUA脚本完成之前发出请求。

您可以使用应用程序侧逻辑来解析所需的队列模式。伪语言

func MyBRPOPLPUSH(source, dest, maxItems = 1, timeOutTime = 0) { 
   items = []
   timeOut = time() + timeOutTime
   while ((timeOut > 0 && time() < timeOut) || items.count < maxItems) {
      item = redis.RPOPLSPUSH(source, dest)
      if (item == nil) {
         sleep(someTimeHere);
         continue;
      }
      items.add(item)
}