I'd like to use single ZADD or HMGET commands instead of a MULTI/EXEC.

Is there any limit on the number of (score, member) tuples that ZADD can handle?

Is there any limit on the number of fields that HMGET can handle?

Comment From: itamarhaber

The two hard limits I know of are:

  • A hardcoded 1GB for client query buffer (PROTO_MAX_QUERYBUF_LEN in server.h)
  • The maximum number of arguments is the maximal value of the int C data type, which is usually signed and 4 bytes long meaning up to 2,147,483,647

Furthermore, your Redis client may have additional limitations. That said, you should avoid pushing your communications to the limit and use a sane "batching" number. To reduce RTT further, consider using pipelines or Lua scripting.