The robust data structures that Redis offers are by far my favorite feature. It can be used as a simple key/value store like you would do with Memcached but also allows you to create hash tables to simulate more Mongo-like features as well as lists and sorted sets that can be used for queues, chat systems and leaderboards (basically anything you want sorted). Also, the option to flush to disk and have persistence is pretty awesome.
You can't really search through keys (there's a debug command for it, but not for production use) or through values. Sometimes you just want to be able to grab all the hashes that have value X and you simply can't without creating additional keys to track the mapping. This is a shortcoming compared to Mongo where you can still pull documents that contain a specific value. Also, the speed to shutdown and startup larger databases is a tad sluggish.
I wouldn't recommend it as a drop in replacement for MySQL or anything due to the limitations for searching, but for caching as well as queues and scored data (like game leaderboards) it's the only choice.
I use Redis for a series of things, specifically a chat system and leaderboards for tracking site activity. I have also used Redis a ton in front of MySQL to serve as a more direct index in scenarios where queries are under performing and the tables are so larger (50m+ rows) that trying to reindex means a chunk of downtime. I also use Redis for user sessions. I am also starting to migrate away from Memcached for basic key/value stores in front of MySQL.