At my last company, we used redis both for celery as a queue, and a cache for values we needed to call often and retrieve quickly. We ALSO used Mongo, but moreso as a store for larger documents that were called less frequently. I think it's not fair to compare them directly together, they are each useful in their own specific cases.
The way I look at Redis is a service that helps to off-load main db. Obvious example is how people use it as a cache. But it has other use, such as:<p>- Leaderboard: Redis shines when we need to store ranking data.
- Geo Query: Instead of query geo spatial index directly from MongoDB. I use Redis and feed the id back into MongoDB
- Track Occurence Of Event: Let's say we need to keep track state of an user
- Set of data<p>In other words, I treat Redis as a network/distributed data structure, which I can implement in the main db, but will require heavy read/write.