What's next: From Rust to production
Three follow-ups, ranked by how much each extends what you learned.
Path 1: Swap Vec<u8> for bytes::BytesMut. The whole parser becomes zero-copy: every RespValue::BulkString borrows from the input buffer instead of allocating a new String. Typical win: 10-20% on small commands. The exercises walk through this.
Path 2: Replace Arc<Mutex<HashMap>> with dashmap::DashMap. Reads no longer serialise on a single mutex. Typical win: 30-50% on read-heavy workloads. The exercises walk through both DashMap and a sharded-by-hash custom store.
Matching exercise: Match each upgrade to the bottleneck it removes
Loading practice…
Path 3: Read tokio-rs/mini-redis (the tokio team\u2019s example Redis clone) and compare to yours. You can navigate it now because you have the shape. Look for the framed-codec pattern and the connection trait.