Implementation steps.
X: done P: in progress
[X] Bind to a port [X] Respond to PING [X] Respond to multiple PINGs [X] Handle concurrent clients [X] Implement the ECHO command [X] Implement the ECHO command without quote [X] Implement the SET & GET commands [X] Expiry [P] RDB Persistence [ ] RDB file config [ ] Read a key [ ] Read a string value [ ] Read multiple keys [ ] Read multiple string values [ ] Read value with expiry [ ] Replication [ ] Configure listening port [ ] The INFO command [ ] The INFO command on a replica [ ] Initial Replication ID and Offset [ ] Send handshake (1/3) [ ] Send handshake (2/3) [ ] Send handshake (3/3) [ ] Receive handshake (1/2) [ ] Receive handshake (2/2) [ ] Empty RDB Transfer [ ] Single-replica propagation [ ] Multi Replica Command Propagation [ ] Command Processing [ ] ACKs with no commands [ ] ACKs with commands [ ] WAIT with no replicas [ ] WAIT with no commands [ ] WAIT with multiple commands [ ] Streams [ ] The TYPE command [ ] Create a stream [ ] Validating entry IDs [ ] Partially auto-generated IDs [ ] Fully auto-generated IDs [ ] Query entries from stream [ ] Query with - [ ] Query with + [ ] Query single stream using XREAD [ ] Query multiple streams using XREAD [ ] Blocking reads [ ] Blocking reads without timeout [ ] Blocking reads using $ [ ] Transactions [ ] The INCR command (1/3) [ ] The INCR command (2/3) [ ] The INCR command (3/3) [ ] The MULTI command [ ] The EXEC command [ ] Empty transaction [ ] Queueing commands [ ] Executing a transaction [ ] The DISCARD command [ ] Failures within transactions [ ] Multiple transactions