Skip to content

Commit

Permalink
use setImmediate instead of queueMicrotask (to improve performanc…
Browse files Browse the repository at this point in the history
…e) (#2516)
  • Loading branch information
leibale authored May 29, 2023
1 parent e696653 commit 100a523
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ If don't want to queue commands in memory until a new socket is established, set

## How are commands batched?

Commands are pipelined using [`queueMicrotask`](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback).
Commands are pipelined using [`setImmediate`](https://nodejs.org/api/timers.html#setimmediatecallback-args).

If `socket.write()` returns `false`—meaning that ["all or part of the data was queued in user memory"](https://nodejs.org/api/net.html#net_socket_write_data_encoding_callback:~:text=all%20or%20part%20of%20the%20data%20was%20queued%20in%20user%20memory)—the commands will stack in memory until the [`drain`](https://nodejs.org/api/net.html#net_event_drain) event is fired.

Expand Down
2 changes: 1 addition & 1 deletion packages/client/lib/client/socket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ export default class RedisSocket extends EventEmitter {
this.#socket.cork();
this.#isCorked = true;

queueMicrotask(() => {
setImmediate(() => {
this.#socket?.uncork();
this.#isCorked = false;
});
Expand Down

0 comments on commit 100a523

Please sign in to comment.