Upstash Documentation

WAITAOF

Wait for local and replica persistence.
2 min read

Use WAITAOF to block until preceding writes have been persisted to the append-only file locally and on replicas.

<numlocal> is how many local acknowledgements to wait for and <numreplicas> how many replicas must have persisted the writes. The two-element reply gives the local count first and the replica count second, and either can come back lower than requested when the timeout expires, so both need checking. A timeout of 0 waits indefinitely.

Where WAIT confirms only that replicas received a write, WAITAOF confirms that it reached persistent storage, which is the stronger guarantee to ask for before acknowledging work that must survive a restart. On Upstash it waits for the writes enqueued before it began, including writes made by other connections.

Syntax#

Arguments#

ArgumentRequiredRepeatableDescription
numlocalYesNoWhether to wait for local persistence: 0 or 1.
numreplicasYesNoNon-negative number of replicas whose append-only files should include prior writes.
timeoutYesNoMaximum wait in milliseconds; 0 means no timeout.

Important points#

  • This deployment waits for writes enqueued before WAITAOF begins, including writes from other connections.
  • The two-element reply contains the local persistence acknowledgement first and the replica persistence count second.

Response#

The reply reports the result of the operation. Error replies have the same shape in RESP2 and RESP3 and are surfaced as exceptions by the SDKs below.

ProtocolReply
RESP2Two-element array of integers: local and replica acknowledgments
RESP3Two-element array of integers: local and replica acknowledgments
Note

Client libraries often decode bulk strings, maps, sets, and numeric strings into language-native values. The table describes the Redis wire reply.

Examples#

TCP examples use the TLS REDIS_URL from the Upstash console. REST examples use UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN.

Redis CLI
@upstash/redis
Note

This command is not supported yet in @upstash/redis.

upstash_redis
Note

This command is not supported yet in upstash_redis.

ioredis
node-redis
redis-py
go-redis
jedis
redis-rs