The killer feature I'm looking for is Riak's "it just works" -- especially in the case of nodes failing, soft failing, going offline, timing out, whatever.<p>In my situation, I don't care about the performance at all, because I don't have many keys at any given moment. The few that I have matter greatly.<p>I care that when I store a key, it's reliably, durably, stored and replicated, and that when nodes fail I don't have to do anything special to keep running. (This is in contrast to PostgreSQL, MySQL, or Mongo replication, where you have to fail over, then switch back eventually, and it takes special effort.)<p>AFAICT, It's not provided by Redis or CouchDB either, because their replication is async -- keys can get lost.<p>Having looked at a bunch of options in the last couple weeks, it seems like only Riak and Cassandra truly offer durable, synced replication that isn't difficult to admin. (...and of the two of them, Riak's documentation gives much more confidence about the ongoing admin efforts.)<p>Has anyone used any solid options I've perhaps overlooked?
Definitely agree on the expense of a list-keys operation, be sure to avoid at all costs.<p>Some of the Riak documentation was incomplete/incorrect which made implementation a little sticky, but the mailing list is extremely responsive and helpful.<p>Otherwise, have had a great experience with Riak thus far. Looking forward to the ease of scaling as well!
I'd love to use riak for all the reasons mentioned in this article, and more.<p>The single missing 'feature' (design decision) that I can't live without, is that you can't efficiently do range queries/order-by on the key in riak today.<p>Hopefully this will get easier with secondary indexes / riak-search integration. Not clear yet.
I love Riak. The one minor complaint that I have is having a small development/test cluster is pretty painful. If you have <N nodes, you end up with duplicated data in memory and on disk. Sucks for developers who would like a local instance to test with on their virtualized dev boxes.