Hello, I've been trying to implement a use case for Redis sorted sets
using Lua scripting in Redis 2.6 and after a lot of time without being
able to make it work I've managed to reproduce my problem in a simple
scenario. I'm still not sure if I'm doing something wrong but
basically I can't get ZUNIONSTORE to work if i'm using unpack and
'AGGREGATE' 'MIN' at the same time:
redis
127.0.0.1:6379> zadd set1 1 key1
(integer) 1
redis
127.0.0.1:6379> zadd set1 1 key2
(integer) 1
redis
127.0.0.1:6379> zadd set2 2 key1
(integer) 1
redis
127.0.0.1:6379> zadd set2 1 key3
(integer) 1
redis
127.0.0.1:6379> eval "return redis.call('zunionstore', 'tmp', 3,
unpack(KEYS))" 3 set1 set2 set3
(integer) 3
redis
127.0.0.1:6379> zrange tmp 0 -1 WITHSCORES
1) "key2"
2) "1"
3) "key3"
4) "1"
5) "key1"
6) "3"
redis
127.0.0.1:6379> eval "return redis.call('zunionstore', 'tmp', 3,
unpack(KEYS), 'AGGREGATE', 'MIN')" 3 set1 set2 set3
(integer) 2
redis
127.0.0.1:6379> zrange tmp 0 -1 WITHSCORES
1) "key1"
2) "1"
3) "key2"
4) "1"
redis
127.0.0.1:6379> eval "return redis.call('zunionstore', 'tmp', 3,
'set1', 'set2', 'set3', 'AGGREGATE', 'MIN')" 0
(integer) 3
redis
127.0.0.1:6379> zrange tmp 0 -1 WITHSCORES
1) "key1"
2) "1"
3) "key2"
4) "1"
5) "key3"
6) "1"
Thank you for your help!