Pipelining commands allows you to send a single http request with multiple
commands. Keep in mind, that the execution of pipelines is not atomic and the
execution of other commands can interleave.
import { Redis } from "@upstash/redis";const redis = new Redis({ /* auth */});const p = redis.pipeline();// Now you can chain multiple commands to create your pipeline:p.set("key", 2);p.incr("key");// or inline:p.hset("key2", "field", { hello: "world" }).hvals("key2");// Execute the pipeline once you are done building it:// `exec` returns an array where each element represents the response of a command in the pipeline.// You can optionally provide a type like this to get a typed response.const res = await p.exec<[Type1, Type2, Type3]>();
For more information about pipelines using REST see
here.If you wish to benefit from pipeline automatically,
you can simply enable auto-pipelining to make your redis client
handle the commands in batches in the background. See
the Auto-pipelining page.
Remember that the pipeline is able to send multiple commands at once but
can’t execute them atomically. With transactions, you can make the commands
execute atomically.
import { Redis } from "@upstash/redis";const redis = new Redis({ /* auth */});const p = redis.multi();p.set("key", 2);p.incr("key");// or inline:p.hset("key2", "field", { hello: "world" }).hvals("key2");// execute the transactionconst res = await p.exec<[Type1, Type2, Type3]>();