Closed GoogleCodeExporter closed 9 years ago
You can't mix IntegerTranscoder and incr/decr. incr/decr require the numbers
to be
encoded as strings as they are language-agnostic server-side operations.
Here's a unit test that demonstrates what you're trying to do:
public void testIncrDecrBug41() throws Exception {
final String key="incrdecrbug41";
// set to zero
client.set(key, 86400, "0");
// retrieve it to see if it worked
assertEquals("0", client.get(key));
// increment it
assertEquals(1, client.incr(key, 1));
// fetch it again to see if it worked
assertEquals("1", client.get(key));
}
Note that the reason you get 49 is because decimal 49 is the string "1".
incr and decr cause a lot of confusion for people because of the server-side
semantics. In newer version of memcached (e.g. changes I don't have applied
yet in
my binary branch), incr and decr will fail on non-numeric string values. That
is,
your first incr would throw an exception.
Original comment by dsalli...@gmail.com
on 24 Dec 2008 at 8:48
Original issue reported on code.google.com by
tankb...@gmail.com
on 24 Dec 2008 at 3:30