Build a Redis clone
What you end up with: a server that speaks RESP well enough for redis-cli to connect, supports
strings, lists and expiration, persists its data, and survives a restart.

This is the classic “learn networking and concurrency properly” project. The protocol is small enough to implement in a day, and the hard parts — concurrent access, cleanup, persistence — are the parts that teach you the most.
What you’ll build
Section titled “What you’ll build”- A TCP server that parses and writes RESP
- Concurrent clients with Tokio tasks and a shared, sharded store
- Commands:
PING,SET,GET,DEL,EXPIRE,TTL,LPUSH,LRANGE - Key expiration, sweeping without blocking the server
- Append-only file persistence, replayed on startup
- Replication: a replica that follows a primary
- Integration tests that drive the server over a real socket
Articles
Section titled “Articles”- What we’re building: a Redis clonethe command set we will actually support
- Speaking the RESP protocollength-prefixed frames, by hand
- Parsing and encoding RESPa decoder that survives a split packet
- Handling concurrent connectionsone task per client, and shared state
- Storing values with expiryTTLs, and the sweep that reclaims them
- Persistence with a snapshotwriting state to disk and reading it back
- Pub/sub messagingsubscribers, channels, and fan-out
- Transactions with MULTI and EXECqueuing commands per connection
- Testing a network servera real client in an integration test
- Benchmarks, and what real Redis doesthroughput, and the gaps that remain
Before you start
Section titled “Before you start”Smart pointers and memory for Arc and interior mutability, then
Concurrency and async all the way through. Do not start this track before
async feels comfortable.