Пока BRPOPLPUSH блокирует версию RPOPLSPUSH и не поддерживают транзакции , и вы можете t handle multiple entries. Also you can
t использовать LUA для этих целей из-за характера выполнения 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)
}