http://code.google.com/p/redis/
I just came across this really cool persistent alternative to memcached. I haven’t spent too much time looking at the internals, but it accepts write operations and writes then asynchronously. This introduces the possibility of some data loss if you have pending writes, and the machine goes down or the like, but overall, the performance boost and persistence more than make up for it in most use cases.
I’ve played around with it on my macbook pro (very simple to build and get running), and it seems pretty cool. It supports more features than memcached like, list and set operations (which are atomic), and push/pop operations. This means that this could be a good candidate for distributed queueing and messaging systems. Not to mention, it also supports master/slave replication!
Also, currently the ruby client supports consistent hashing (which I haven’t used yet), but that adds a lot to the scalability. Given the speed (reported at 110,000 SETs/second, 81,000 GETs/second), I can see Redis coming into use in a lot of situations where you don’t need all the overhead and guarantees that a ‘real’ database gives you.
The only downside that I can see at the moment is that it has to read the entire dataset into memory. That limits the size of your datasets, so estimate your data size before going this route. Also, another glaring omission is a Java client. There are some in the works (and I’ve thrown together a simple one), but nothing that is polished and ready to use.
Posted by Mathew Duafala