我已经使用BRPOPLPUSH实现了Redis's reliable queue pattern,因为我想避免轮询。
但是,这将导致每个项目的网络请求。我该如何扩充它,以便工作者BRPOPLPUSH一次输入多个条目?
答案 0 :(得分:0)
虽然image.onload
阻止了BRPOPLPUSH和RPOPLSPUSH的版本,但是由于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)
}