Back to home
Redis

"Any intelligent fool can make things bigger and more complex. It takes a touch of genius - and a lot of courage - to move in the opposite direction."

- E.F. Schumacher

Redis is one of my all-time favorite pieces of software. I hold a lot of respect for its author Antirez. I am also particularly fond of its codebase. I like to look at the Redis source code as a golden example of a well-written C codebase. As an in-memory store, Redis has a different purpose than other Databases. However, this means it has a ton of utility and can be used in some very creative ways. For example, I once wrote an authentication system using JSON Web Tokens that required keeping a blacklist of expired tokens. Due to the nature of JSON Web Tokens, I wouldn't need to keep any given token in the blacklist for longer than a set amount of time. Redis made this extremely easy. Not only was it extremely fast, meaning I could easily check for a token in the blacklist, but it also has features specifically for letting items stored in it expire after a set time. Redis can also very powerfully handle caching, and is surprisingly good at working as a fan-out style service as well. The only issue I have run into with Redis is that people simply don't like to get it set up. Many times I have seen applications resort to Docker just to be able to reliably use Redis as a team, and getting Redis set up in production can sometimes be a challenge.