redis/ioredis

difference Between multi.promise.exec() and multi.exec() in ioredis

Closed

#1,968 opened on Mar 10, 2025

 (7 comments) (1 reaction) (1 assignee)TypeScript (1,069 forks)batch import
help wantedstale

Repository metrics

Stars
 (12,302 stars)
PR merge metrics
 (Avg merge 3d 5h) (5 merged PRs in 30d)

Description

I am currently using Redis with multi.exec(), but I noticed that the result format differs when using multi.promise.exec().

multi.promise.exec() appears to support Bluebird promises, but the returned result format is different from multi.exec(). I expected both to return the same output, but there seems to be a difference. Since I primarily want to use multi.exec(), I’d like to understand whether this difference is intentional and if there’s a recommended approach to ensure consistency.

Would appreciate any insights on this

const multi = redis.multi();
multi.zrevrank(key, id);
multi.hget(key, id);
const result1 = await multi.promise.exec() // [null, null]

const multi2 = redis.multi();
multi2.zrevrank(key, id);
multi2.hget(key, id);
const result = await multi.exec(); // [[null, null], [null, null]]

Contributor guide