Skip to main content

Redis

Software Architect · 2018–2025

I worked across many of the layers of Redis Enterprise, a mature product written mostly in C and Python, from cluster internals to the build system that everyone shipped through.

One central contribution I made was introducing Rust into the codebase, for all the usual reasons: Improved safety, robustness, and developer experience.

Some of that work is public: RedisJSON, the JSON data type for Redis, moved from C to Rust, and I wrote its first Rust commit and, later, the cut-over that replaced the C module in the shipping product. It sits on redismodule-rs, the open-source Rust framework for Redis modules, where I was one of the first contributors.

Inside the cluster software, the same approach landed on the daemon that tracks which nodes are alive and which one holds the cluster’s configuration. Failover was based on it, so a wrong answer there would cause an outage on somebody’s production database. Rust’s async support was unfinished when I began. I built on the nightly toolchain, moved the whole thing onto Tokio from a different async runtime partway through when the ecosystem shifted under it, and the pieces I needed reached a stable release months after I had committed to them. But it proved its case in production: when the company later set out to rebuild its cluster management from scratch and asked me which language to build it in, that daemon made most of my case for Rust.

What I learned

Working on something similar?

Let's talk Book a free 30-minute call
All companies