Redis was billed as a "memory-based data structure store" when it came out. Its design was beautiful in its simplicity: A single thread accepted connections and stored/retrieved single values, lists, and dictionaries in memory as text, while a second thread periodically dumped the memory to a file that could be reloaded again on startup. A few other commands allowed data to be shared between Redis servers to scale the design up.
Redis is by no means an ACID-compliant database like MySQL or PostgreSQL, but we've used it for small or short-term storage such as for URL-shortening applications. It can be used as a cache (values can be set to expire), a messaging queue, or a shared locking system that doesn't use files. Since it writes values to memory, it is very fast, though it's not a good idea to store large datasets in it because it requires all the data to fit in system memory. Its single threading makes it weak for large amounts of simultaneous connections, although it is fast enough that many times that doesn't matter.