I’ve been using memcached for a couple years now and it’s by far one of the most useful open source tools. It’s written by Brad Fitzpatrick of livejournal, and used by everyone from, yahoo to facebook.
It so good because does one thing and it does it very well: It provides a distributed in memory cache.
Its super fast and super reliable, and it makes speeding up your site or application simple.
The server is written in c and uses libevent which is an highly scalable, asyncronous event based polling library which allows it to support tens of thousands of concurrent connections.
The client protocol is compact and there are clients in almost every language. The client libraies do most of the work since they can compress the data that goes into memcached and maintain multiple connections to different memcached instances running on your network (this is why the cache is distributed).
One of the few problems I’ve had with memcached have todo with the c based memcache clients libmemcache and apr_memcache.
libmemcache has problems corking the socket in linux, since it’s written for bsd. I’ve had reliability problems under high load where the client garbles the protocol.
apr_memcache works but the memcached protocol isn’t fully supported and it requires apr, which is a dependancy I’d rather not build into a non apache service.
Plus, I really wanted a OO api to use since I’m writing in c++ not c.
So I built memcache++ about a year ago, based origionally on a now defunct c++ client called memcachedpp.
Now that we have launched third rail, I now have a place to release memcache++ so grab it here:
http://3.rdrail.net/code/memcache++
Please send me a mail if you have problems with it, or if you are using it. I’m using it on a few projects with great success!
-Jake
jake TR Site, c++, coding, memcached