There are a lot of articles exploring the whys and wherefores of redis and I thought I would share some thoughts from somebody well versed in redis having used it in production over the past five or six years.
One of the foundations of the power of relational databases is the use of indexes. Redis gives you the ability to build your own, the way you want it, in a completely visible manner.
The essence of any database system is the ability to get information back out. Redis allows you to do this in an efficient manner. Even comparing to 'K/V' datastores, redis is exceptional because it allows you to retrieve discrete sub-elements, as opposed to having to de-serialize an entire object containing the part you want, to get the part you want.
(Nearly) all the commands happen in O(1) complexity!
Redis is single-threaded and lock-free. That's easy to reason about, in anyone's book.
Redis stores values, of course, but those values can be strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, geospatial indexes with radius queries, Phew!
Lua. It rocks. Do you know lua? check it out.
Yes, redis is persistent, and as persistent as even postgresql! And, in memory? yes.