Overall Satisfaction with Redis
Redis is being used as our primary NoSQL key-based database store. In the specific platform that Redis is being used the most, we have PostgreSQL as the main relational data store, Memcache for expiring key-based caching and Redis. The entire platform used within the business unit utilizes Redis but other departments are starting to use it as well given the ease of use, stability, and reliability.
- Easy for developers to understand. Unlike Riak, which I've used in the past, it's fast without having to worry about eventual consistency.
- Reliable. With a proper multi-node configuration, it can handle failover instantly.
- Configurable. We primarily still use Memcache for caching but one of the teams uses Redis for both long-term storage and temporary expiry keys without taking on another external dependency.
- Fast. We process tens of thousands of RPS and it doesn't skip a beat.
- Autoscale. We've used Redis at RedisLabs and currently on AWS with ElastiCache plus previously I've self-hosted it and there are no real options for "serverless" or an operating model whereby I'm using only the resources needed to handle my current volume, instead, everything is provisioned and sized to your highest throughput needs. For us, that's only a few hours a day where we're at our peak, the other 16 hours could run smaller hardware but the system doesn't autoscale up/down seamlessly on any of the platform providers.
- Management console. Some systems such as Riak have a built-in GUI for ops or Mongo runs their own Compass product but Redis seems to entirely rely on other OSS solutions, which is great, but having a built-in tool that's lock-step with the released versions would ease any quick troubleshooting that CLI-challenged ops teams could utilize.
- Redis replication is asynchronous. Therefore, when a primary cluster fails over to a replica, a small amount of data might be lost due to replication lag.
- Reduced load to the primary transactional database.
- Ability to launch open source-based solutions backed by Redis quickly to reduce "not invented here" within engineering.
- Reduced infrastructure gave Redis' small footprint and flexibility for temporary caching as well as permanent storage.
- Product Features
- Product Usability
- Product Reputation
- Prior Experience with the Product
It's hard to argue with an open solution that's free, reliable, performant and has a lot of support out there. This product is in wide use across many large customers. Twitter is an active contributor of knowledge on their blog and I'm fairly their usage of Redis will be much larger than yours. Not everyone is a Twitter and if Twitter can use Redis vanilla, I'm sure you can make it work too.
Redis is great for queues (push/pop) and pub/sub. It can also be used for caching though take care of managing those expire settings and don't mix permanent keys with expired keys on the same hosts unless you want to spend some time troubleshooting unplanned evictions. When looking at open source solutions to messaging, queuing, background jobs, etc. - you'll find many solutions work with Redis out-of-the-box.