Redis became closed source, so I made my own in Golang
· 3 min read · Comments ↓
I shipped a drop-in replacement of the in memory key-value store Redis, made in Golang
It’s the start of yet another weekend. I’m sitting with my friend, working on the venture we started just a couple hours ago (More about that soon) - and while she’s talking on call, I was browsing twitter and saw a few tweets about Redis becoming source-available now.
I’m a FAN of redis and seeing this, i was just devastated. I really love open source software - and I think commercial open source is great too. But changing the license of something like this can potentially have a great impact on the community and the people using the software.
At the same time, I’ve been learning GoLang and trying to get into the “deep” engineering space lately, so I dug deep into how Redis works - the protocol, the commands, the data structures, the algorithms, etc. Now, people might think that hey this is literally just a dict and a list, but its really notDeepEqual. There’s a lot of stuff that goes inside something as complex as Redis that I was not even aware of.
Like, how do you manage persistence? How do you handle memory pressure? How do you handle network issues? How do you handle concurrency? How do you handle data expiry (TTL)? Pub-Sub? Current context? And so on
So anyways, I decided to make my own redis clone in Golang.
And over the next few hours, I had a working redis server - and I wrote a simple test file in python to see if it worked.
ANDDDD
Only the first test passed. Lol. Slowly but surely, I was able to get the server to run and the test file also worked properly. I was (luckily) logging the commands that were sent to the server. Because…
The problem
I figured that all the code i wrote was not even compatible with the redis protocol. I had written the commands, and they “worked” in the sense that they were sent to the server, and the server replied, but i couldn’t use it as a drop-in replacement for redis.
SOOO I rewrote some of my code, all of my tests to the redis protocol (And used redis client python library to test it), and it worked.
ANNDDDD LAUNCH!
I launched this on Twitter and it got a LOT of love and traction (thank you so much guys 🥺)
View tweet
Best part was that people were contributing to the project, some said that they will be using it in production, and some asked me how I made it. I was really happy to hear that.
View tweet
Redis sent me an email…
The project got so much traction, in fact, that redis sent me an email saying that I need to change the name of the project to something else. so, now, it’s called radish.
I also made a BEAUTIFUL landing page - https://radish.dhr.wtf and a mascot (radish the database CRUSHING redis)


Anyways here’s the github repo, please leave a star if you like it!

Learnings
- Golang is a great language
- Engineering isn’t hard if you break it down into the smallest possible units and work on them one by one
- Storytelling is the ultimate growth hack
- You can’t learn everything at once, you have to learn by doing
Anyways. That’s it for today.
I’ll be building more and more cool stuff, so follow me on twitter - https://x.com/dhravyashah to keep up!