CAS operation
Dustin Sallings
dustin at spy.net
Sat Sep 8 07:27:33 UTC 2007
I just prototyped a pair of operations for implementing CAS in
memcached. This provides atomic updates of arbitrary objects without
having to rely on locks.
The idea is that every object will have some unique 64-bit value
that can be retrieved with a new command (I called it ``gets'' for
some reason). This value needs to be unique and consistent for a
given value within memcached. It can be a counter or memory address
or whatever.
After doing a ``gets'' for a key and getting a response, the client
can manipulate the data structure as fit, and use a ``cas'' operation
to put it back iff it has the same value as retrieved (based on the
identifier). It returns a ``NOT FOUND'' error when there's no value
for the key (and then you can try it with an ``add''), or ``EXISTS''
when the identifier does not match (and then you can try again from
the ``gets'').
Opinions?
--
Dustin Sallings
More information about the memcached
mailing list