I've come to appreciate simple APIs like the one exposed by Redis. Such simple APIs tend to require more careful planning to use but they help you to avoid running operations which are complex and inefficient. They often force you to think about your app architecture in a broader sense in order to solve problems using simpler primitives.
That said, I think the fact that Redis stores everything in memory can make it unsuitable for certain projects as a database where only a small fraction of the whole data set is ever exposed to users at any given time.