I love Redis.
Redis is an open source in-memory data structure store specializing in scenarios where you want a database cache, a key-value lookup or message brokering. Because it’s in memory and special purpose, it’s blazing fast.
Actually, a lot of people love Redis. According to db-engines.com, it’s ranked in the top 10 of most used databases (as of Dec 2016) and growing. In 2014, Twitter said they operate more than 10k instances running to power Twitter’s timeline, serving 39m QPS.
Redis isn’t just for scale scenarios either. It has a wonderful programming interface which is the same whether you’re using a command line interface or its programming api. Whenever we’re looking to prototype an app or service, we often start by using Redis because the speed to get ramped up. And it’s almost always plays a role whenever we’re looking at increasing performance through caching or pre-aggregation / counting.
When we started using Redis within my team in Microsoft a couple of years ago, we relied on a PAAS (hosted) version from Azure. The Azure offering is fully managed with features such as persistence, SSL, etc. Outside of Microsoft, I’ve also used RedisLabs, and Heroku’s in-house offering. While these (along with Amazon) are all good options, there’ll also be times when you want to run your Redis yourself on your own VM’s. This might be for cost reasons, for learning or for future scale. We started down this path ourselves about a year ago.
When it comes to managing your own Redis installation, there’s a bunch of client / desktop tools (e.g. Redis Desktop), but they’re focused mostly on accessing data. Then there’s pretty cool service offerings like Redsmin — but it’s a hosted service that needs credentials to your server which may not appeal to you for security reasons.
So, in response to this need, I started an open source product called “Redis Live”.
Redis Live is a web based interface to view your Redis servers, cluster, historical data and even supports a command line interface.
It’s built in Node.js and available on Github to download or modify. The project was a great way for me to go deeper into the Redis space (and learn React which I used as the front end) and I’m glad to give something back to the community. The service is functional (you can view a live demo of it here), but I don’t recommend using it in production yet. In its current stage, it is mostly for small scale test and development installations that you want to manage, understand, monitor, etc. However, I am looking at the hosted space as a potential direction for my next venture and regardless, if I get enough feedback, I’ll fund this to bring it to production level (which means adding auth, additional security, auditing, etc).
Redis-Live has the following features:
- Web based “console” for free form querying (e.g. “SET hello world”, “GET hello”)
- Autocompletion and whitelisted / blacklisted commands
- Individual server stats (leveraging the INFO command)
- Cluster support and status (e.g. which slave nodes are connected to the cluster, etc)
- Historical stats on memory usage, # of connected clients with interactive charts and glanceable spark lines
- Responsive UX
- Tested / support for Redis 3.x
Here’s an example screenshot of a running Redis Live instance. This screenshot shows a small Redis cluster of 6 nodes (3 master, 3 slave). Each are listed with basic info such as # of keys and also shows some spark lines tracking those same metrics over time.
In addition to the spark lines, there’s more detailed historical data which you can query and interact with:
And a basic command line interface is supported:
And of course, the UX is responsive:
That’s it! Building this was a super fun exploration in both the Redis world, and with React (which is a post for another time). As I mentioned, feel free to engage with me on the project with contributions, ideas, requests, etc.