Redis
code.google.com
code.google.com
http://github.com/ezmobius/redis-rb/blob/0951204e6a84ca335ac...
And I am really enjoying being able to store lists as values and pushing/popping/indexing. Looking forward to where you are going with this.
Although the current release doesn't seem to support all the documented features yet. incrby and decrby don't work yet.
Can you get in touch? I'd love to pick your brain a little about redis.
http://code.google.com/p/redis/wiki/README
Not very well formatted but if you want to know a bit more about Redis without to uncompress the tar.gz it should help.
For example if you want to use Redis in order to store logs from a lot of different computers, and you want to only take the last 1000 entries for every computer, all you need to do is for every computer something like this:
RPUSH computer_5 "... your log line ..."
LTRIM computer_5 0 999
Redis offers atomic LPOP/RPOP too, this makes pretty easy to create queues where different computers can pop/push values with the guarantee the operation is atomic.Another trivial example: think about implementing something like YC with a key-value DB. Support for lists and sets will make your life much easier :)
Live demo at http://gae-datastore.appspot.com/
Have not got around to doing performance tests, but based on general AppEngine performance, I guess it will not come close to a dedicated Memcache machine. Should be good for everything else.
About the speed of dumping the DB. 1 million keys DB with 16 bytes string inside every key takes something like 1 second to be saved on the same HW. For the next release I hope to have replication and LZO compression of (compressible) big values working.
Apart from speed what I like of C for this kind of projects is the self-contain-ness and the fact that most developers that may help in the development are probably able to read/write C but not Erlang.