May 30, 2010 at 12:01 AM

Anyone have comments, ideas etc.

Reply to this.

Jun 28, 2010 at 5:23 PM

Hi, looks like some great work so far. Am considering implementing this as a provider for a project I'm working on. Do you have an intended release date? Looks like you're making quick progress.

Also, any reason for MS-PL vs something like MIT or LGPL?


Alex Norcliffe

Jun 28, 2010 at 5:40 PM

Hi Alex,

Last things first: To be honest I did not think much about the license :-)

One thing I do not like is GPL, and I thought that LGPL is just a lesser evil - I wanted a license where everyone can do almost whatever what they want with the code, provided they do not claim to have written it :-) If people want to use my code to build a commercial product, so be it. Another reason why I did choose MS-PL is that I am using Jeffrey Ricters Powerthreading library, which explicitly states that it is not allowed to run it on anything but windows, so I thought a M$ license would better.

In regards to release dates, I haven't really considered it yet. As it is now the client is stable. I haven't tested it in a production like environment, but I have run a soak test for 8 hours with 50 threads hammering two memcached servers constantly, and not a single timeout or exception was thrown in the process and the average number of operations per second was in the vicinity of 20.000 per second, so I think the client is pretty good as it is.

What I think it needs before I would consider it a good release is the healing part, i.e. if a socket dies, then I need to create a new socket and inject it into the pool, and more stuff like that to make the client more robust in case the entire memcached cluster goes down, then the client should be able to recover when the servers come up again.

In regards to using it in your project, I would say go ahead. If your own project uses asyncronous methods, then I don't think there are other memcached clients out there, but if you intend to wrap the asyncronous methods in sync operations, then I think you should write your own interface and simply implement a adapter to this client so if you decide to not use it, you can switch to a more complete client.


Bjorn Smith