multi.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var redis = require("redis"),
  2. client = redis.createClient(), set_size = 20;
  3. client.sadd("bigset", "a member");
  4. client.sadd("bigset", "another member");
  5. while (set_size > 0) {
  6. client.sadd("bigset", "member " + set_size);
  7. set_size -= 1;
  8. }
  9. // multi chain with an individual callback
  10. client.multi()
  11. .scard("bigset")
  12. .smembers("bigset")
  13. .keys("*", function (err, replies) {
  14. client.mget(replies, redis.print);
  15. })
  16. .dbsize()
  17. .exec(function (err, replies) {
  18. console.log("MULTI got " + replies.length + " replies");
  19. replies.forEach(function (reply, index) {
  20. console.log("Reply " + index + ": " + reply.toString());
  21. });
  22. });
  23. client.mset("incr thing", 100, "incr other thing", 1, redis.print);
  24. // start a separate multi command queue
  25. var multi = client.multi();
  26. multi.incr("incr thing", redis.print);
  27. multi.incr("incr other thing", redis.print);
  28. // runs immediately
  29. client.get("incr thing", redis.print); // 100
  30. // drains multi queue and runs atomically
  31. multi.exec(function (err, replies) {
  32. console.log(replies); // 101, 2
  33. });
  34. // you can re-run the same transaction if you like
  35. multi.exec(function (err, replies) {
  36. console.log(replies); // 102, 3
  37. client.quit();
  38. });