These are really useful. I've been telling anyone who will listen that Redis is a very different beast from the other NOSQL / Document stores out there - it scales down to small applications beautifully and makes a whole class of large-scale write problems (like real-time statistics) approachable for smaller projects.
After being clued in by Assaf (who wrote Vanity) I have been testing it out for adoption on my site.<p>A/B testing is practically tailor made for a NoSQL solution: you're storing lots of disconnected bits about individual user/test pairs but never querying over a set of them. The load is potentially <i>very</i> write heavy, <i>very</i> spiky, etc -- these sort of things spell trouble for scaling relational databases. However, key/value stores just slurp them up and ask for more. (Additionally, "eventually ACID" works totally fine for this problem: if one of your Redis machines suddenly dies, you might lose a minute's worth of A/B test assignments for a fraction of your userbase. That's just rounding error on your tests, though, and moreover it is evenly distributed rounding error, so you can just handwave it away.)<p>This is why I went with key/value stores for A/Bingo. (Granted, my site only has about 20,000 writes a week for A/B tests so I could have gotten away with doing it in MySQL/ActiveRecord -- heck, I could probably have gotten away doing it with opening a new flat file for every user -- but some of the larger deployments would probably never have happened if I did it that way. It would have had unacceptable performance implications for key pages on their sites.)
Here's a use case of my own. I'm running a script that does sentence tokenization. Since the algorithm is using machine learning, I have a large dictionary of fragments corresponding to their probabilities. Instead of loading that dictionary off disk, as I had been, the script now accesses them out of Redis.
Thanks for this!<p>I'm planning replace most of MySQL on a web app with redis requests/responses for a faster experience. And this made my day (<a href="http://ozmm.org/posts/sort_in_redis.html" rel="nofollow">http://ozmm.org/posts/sort_in_redis.html</a>). Tks!
We're using redis, exclusively, to power <a href="http://pycon.djangodose.com/" rel="nofollow">http://pycon.djangodose.com/</a> (A live stream of everything going on at PyCon).
It's not just a database - it's also usable out of the box as a fast, language-independent tuple space. Its atomic lists and sets can be used like Erlang mailboxes, and the different components of your system don't need to be in the same language or on the same machine.<p>Another thing I like about Redis is that its features make it very complementary to RDBMSs, rather than a competitor in the same niche.