This evening I updated the asyncronous memcached client that I am building.
I implemented basic performance counters, so the client will populate performance counters for the following items:
- Average wait time for a free client socket
- Total cache operations per second
- Adds per second
- Appends per second
- CAS per second
- Deletes per second
- Prepends per second
- Replaces per second
- Sets per second
- Errors per second
The performance counters also gave me a nice way to assess the performance of the client and with a soak test program running full throttle, only sleeping one ms between interations and using 50 threads and 25 socket, the code is capable of doing almost 20.000 add operations per second against one memcached server.
That's pretty awesome if you ask me :)
Check it out at http://asyncmemcached.codeplex.com - and please do add comments (if anyone is reading this at all )
1. June 2010
.NET , c# , memcached
I have been working with distributed caching for about 4 years now, using memcached as the only server.
I have been trying out different memcached clients, and some have been good, others bad.
They have all had the same problem: They have been syncronous implemented, i.e. they have been wasting a lot of theads on simple waits.
I have started a project to create a fully asyncronous memcached client in .NET.
Its not production code yet, but its a fully working client, for gets/sets. It just needs some additional features, and I will release a version.