| var redis = require("redis"), |
| client = redis.createClient(), set_size = 20; |
| |
| client.sadd("bigset", "a member"); |
| client.sadd("bigset", "another member"); |
| |
| while (set_size > 0) { |
| client.sadd("bigset", "member " + set_size); |
| set_size -= 1; |
| } |
| |
| // multi chain with an individual callback |
| client.multi() |
| .scard("bigset") |
| .smembers("bigset") |
| .keys("*", function (err, replies) { |
| client.mget(replies, redis.print); |
| }) |
| .dbsize() |
| .exec(function (err, replies) { |
| console.log("MULTI got " + replies.length + " replies"); |
| replies.forEach(function (reply, index) { |
| console.log("Reply " + index + ": " + reply.toString()); |
| }); |
| }); |
| |
| client.mset("incr thing", 100, "incr other thing", 1, redis.print); |
| |
| // start a separate multi command queue |
| var multi = client.multi(); |
| multi.incr("incr thing", redis.print); |
| multi.incr("incr other thing", redis.print); |
| |
| // runs immediately |
| client.get("incr thing", redis.print); // 100 |
| |
| // drains multi queue and runs atomically |
| multi.exec(function (err, replies) { |
| console.log(replies); // 101, 2 |
| }); |
| |
| // you can re-run the same transaction if you like |
| multi.exec(function (err, replies) { |
| console.log(replies); // 102, 3 |
| client.quit(); |
| }); |