I’ve just released Mnemosine, which is a key/value store written in Ruby. I wrote it for a CodeBrawl challenge, the details of which can be found here: http://codebrawl.com/contests/key-value-stores. Mnemosine is essentially an incomplete knockoff of Redis. It’s got some of the same data types, and many of the same functions.
Mnemosine could be a good app to study if you’re curious about TDD, client/server apps, using raw TCP sockets, or event driven programming. The tests are extensive, and the code is quite modular.
The contest may be over, but the project was a lot of fun, and I’d like to add some more functionality. For instance, Mnemosine has basic map functionality, but doesn’t support a reduce stage. I’d also like to implement sharding/replication sets, and maybe even indexed search.
Obviously a database written in Ruby is probably not going to be very performant. On the other hand, it’s easy to implement high-level functionality with Ruby, which makes Mnemosine a great testbed for features that would be more time-consuming to write in C/C++.