initial incr call

Cahill, Earl ecahill at
Fri Mar 18 08:40:45 PST 2005

Probably been over this before, but the initial incr call seems kind of
strange to me.  Let's say I have a new key called counter, and I want to
incr it.  I call $memd->incr('counter'); and get undef back.  So, I set it
to 0, and then if I call incr, happy day.  The problem is that setting to 0
is a total race condition, so I have to do something like this


sub incr {

  my $self = shift;

  my $key = shift;

 unless($self->get($key)) {

    require File::NFSLock;

    my $lock = File::NFSLock->new("$nfs_path/memcache.incr.$key",
"BLOCKING", 15, 10);

    if($lock) {

      $self->set($key, 0);






where you lock however you like.  Maybe it's too late now, but it sure seems
like it would be nice if the server would some do similar thing.  I would
like to just call incr, regardless of whether the key has existed before or
not, and get back either 1 for new values, or the old value plus one.  Is
there a reason incr behaves as it does?



-------------- next part --------------
An HTML attachment was scrubbed...

More information about the memcached mailing list