Wygląda na to, że to robi to, czego potrzebuję:
eval "
redis.call('DEL','final')
local set=redis.call('ZREVRANGE','out',0,4,'withscores')
for i = 1, #set/2 do
set[2*i-1], set[2*i] = set[2*i], set[2*i-1]
end
return redis.call('ZADD','final',unpack(set))
" 0