We also find Redis perfect in a whole range of scenarios.
I like Redis because it's simple enough that I feel I easily understand what's going on (i.e. performance is predictable), yet powerful enough to do pretty much everything I want.
From a productivity point of view, the only scenarios that come to mind in which I've found myself thinking a relation database would be better are:
1. Indices: In scenarios where you could use an index with a relational database you need to create and manage this by hand in Redis. This takes time, and increases application complexity.
2. Transactions: They are far less flexible in Redis. Effectively you must get/WATCH all your data before entering a MULTI/EXEC block for setting. I've found organizing code for this can sometimes be very constraining. Of course on the upside, Redis is forcing you to be efficient.
The problem with BSON is that the Python modules that implement it are incredibly slow when it comes to nested dicts. In fact, if you nest too deeply the BSON encoder will just seg fault.
How much RAM? How many instances per server? How many servers?