Store::get_values reads a set of keys in one round trip on PostgreSQL (k = ANY($1)) and falls back to one get_value per key elsewhere. A replicated store serves the batch from a replica and re-reads from the primary the keys the replica has not received yet. IMAP FETCH and STORE, JMAP Email/get and the message and mailbox cache refreshers that every node runs after a write now read their archives READ_BATCH_SIZE (128) at a time instead of one round trip per message. FETCH also prefetches the message data of the messages it is about to mark \Seen, saving the second round trip per message.