I actually build minimal Redis clones in every new language or runtime, or when I want to explore threading models. It all started with https://github.com/rcarmo/miniredis (which I forked to add and experiment with pub/sub), and I just found myself doing it again and again because Redis is the quintessential network service: By implementing it, you learn about socket handling, event loop for a specific runtime, threa…
There’s a lot of interesting / subtle design choices worth studying.
https://github.com/antirez/RESP3/blob/master/spec.md
The best parts still haven’t been implemented.