Updates to the memcached client

New updates is available for my memcached client.

I decided to release this update as a proper release in codeplex, since the client contains the features it really needs now.

Features

  • Server monitor that will monitor memcached server nodes and remove them from the cluster if they are dead, but re add them as soon as they become available again.
  • MultiGet implemented, so now you can ask for more than one key at a time. Only caveat to that is that the values have to be of the same type.
  • Gets has been implemented so you can get that CAS value to be used for Check and Set operations
  • Set operation has been implemented so you can unconditionally overwrite values in the memcached server.
  • Performance counters have been implemented, so you can see how busy your server is with doing memcached operations and how long it takes.

You can download the new release at: http://asyncmemcached.codeplex.com/releases/view/73320

 

 

Updates to the asyncronous memcached client

New updates is available for my memcached client.

 

  • Server monitoring is in place, i.e. if a server node goes down or several requests fail for a given node.  
  • Logging framework has been added, so useful log statements can be added.
Coming updates are:

  • Actually using the information added by the server monitor, to remove a node when it is marked as dead and reintroduce it again, if and when it is marked as alive again.
  • Implement Set - I don't know how I could forget this in the first version, but it's very simple to implement with the current implementation.
  • Implement MultiGet - so you can save a few precious roundtrips if you are lucky enough that all your keys end up on the same server node.
  • Implement stats operation - so you can get some usefull statistics back from the server.

 

Anyway, check it out at: http://asyncmemcached.codeplex.com

If anyone out there is actually using the client or considering it, please let me know, I would really like some feedback.

Updates to the asyncronous memcached client

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 )

Asyncronous memcached client

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.

Check out:

http://asyncmemcached.codeplex.com/

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.