<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">While we're here, perhaps I am alone on this, or maybe it is just the perl client, but I think incr and decr should do their thing for new keys.&nbsp; Currently, in my experience, they return undef for new keys.&nbsp; I checked in my code and act accordingly.<br><br>Thoughts?<br><br>Earl<br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Original Message ----<br>From: Dustin Sallings &lt;dustin@spy.net&gt;<br>To: Memcached list &lt;memcached@lists.danga.com&gt;<br>Sent: Wednesday, July 25, 2007 11:36:22 PM<br>Subject: binary protocol incr/decr proof-of-concept<br><br><div><br>&nbsp;&nbsp;&nbsp;&nbsp;I've done an implementation of incr and decr in my test server
 and&nbsp;&nbsp;<br>client (and my real client) as I'd described earlier as a sort of&nbsp;&nbsp;<br>proof-of-concept and it seems to work as I was hoping it would.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;It retains much of the properties of the original incr and decr&nbsp;&nbsp;<br>implementations, but never treats the number as an ascii string.&nbsp;&nbsp; <br>Because of this, I felt that it was important to be able to&nbsp;&nbsp;<br>optionally pass a default value into the mutation command.&nbsp;&nbsp;Since a&nbsp;&nbsp;<br>value was needed, it also seemed important to pass the expiration for&nbsp;&nbsp;<br>that value.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Note that this does slightly conflict with the goal of keeping&nbsp;&nbsp;<br>commands small and discrete since it may create a new mapping as a&nbsp;&nbsp;<br>side-effect.&nbsp;&nbsp;However, I think it makes things a bit easier.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;The request packet looks like this:<br><br>[normal
 packet stuff]<br>[32-bit unsigned incr/decr amount]<br>[32-bit unsigned default value]<br>[32-bit signed expiration value]<br>[key]<br><br>&nbsp;&nbsp;&nbsp;&nbsp;The response packet looks like this:<br><br>[32-bit unsigned new value]<br><br>&nbsp;&nbsp;&nbsp;&nbsp;If the expiration is less than 0, the default value is ignored and a&nbsp;&nbsp;<br>NOT_FOUND status will be returned (as before).<br><br>&nbsp;&nbsp;&nbsp;&nbsp;I had implemented mutation with default in my client by using a sort&nbsp;&nbsp;<br>of complicated combinations of mutate and add.&nbsp;&nbsp;I'm guessing other&nbsp;&nbsp;<br>people either do the same thing (or worse, just a mutate or set).<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Note that flags are undefined here.&nbsp;&nbsp;We talked briefly about having&nbsp;&nbsp;<br>flags defined for common encoding mechanisms such as the big-endian&nbsp;&nbsp;<br>32-bit unsigned integer used in this response (as would be retrieved&nbsp;&nbsp;<br>using
 a normal ``get'' command).&nbsp;&nbsp;In the meantime, I've completely&nbsp;&nbsp;<br>ignored the problem.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Comments?<br><br>-- <br>Dustin Sallings<br><br><br></div></div><br></div></div><br>
      <hr size=1>Be a better Globetrotter. <a href="http://us.rd.yahoo.com/evt=48254/*http://answers.yahoo.com/dir/_ylc=X3oDMTI5MGx2aThyBF9TAzIxMTU1MDAzNTIEX3MDMzk2NTQ1MTAzBHNlYwNCQUJwaWxsYXJfTklfMzYwBHNsawNQcm9kdWN0X3F1ZXN0aW9uX3BhZ2U-?link=list&sid=396545469">Get better travel answers </a>from someone who knows.<br>Yahoo! Answers - Check it out.

</body></html>