mdcached stands for "multi-domain cache daemon" and in its idea is very similar to memcached - by default it even implements the same network protocol. The implementation is made from scratch and has practically no connection to the memcached codebase.

Things that makes it significantly different than memcached are:

  • It implements multiple "domains" - virtual lists that can hold arbitrary (under the restrictions of the protocol) keys and values. There can be arbitrary number of domains as well as keys in the domains (for values of "arbitrary number" <= 2^32-1). Multiple key-value pairs with the same key can exist, as long as they're in different domains.
  • The daemon is multithreaded and can thusly take advantage of multiple CPUs in the system (SMP-friendly).

In the default mode, mdcached daemon emulates memcached network protocol. Clients that know they're communicating with mdcached can switch between the original protocol and the "domains" protocol as they see fit (though the "domains" protocol is superset of the original). Speed in general is comparable to memcached, though inserts are somewhat slower. mdcached is written in C, and has been developed & tested on FreeBSD 5.4 but should have no problems running on Linux. If you do encounter incompatibilities, please send patches :)

If anyone's using this, either in testing or productions, please notify me, just so I can keep track of its usage.

You can download it here.