Future ff = mClient.set("test", 900, 2);
System.out.println("存储的值:"+mClient.get("test"));
mClient.incr("test", 5);
System.out.println("存储的值:"+mClient.get("test"));
//关闭连接
mClient.shutdown();
OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
at net.spy.memcached.protocol.BaseOperationImpl.handleError(BaseOperationImpl.java:169)
at net.spy.memcached.protocol.ascii.OperationImpl.readFromBuffer(OperationImpl.java:151)
at net.spy.memcached.MemcachedConnection.readBufferAndLogMetrics(MemcachedConnection.java:813)
at net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:792)
at net.spy.memcached.MemcachedConnection.handleReadsAndWrites(MemcachedConnection.java:672)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:635)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:409)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:1334)
上面的代码运行,提示不能自增或者自减一个非数值的值。这是因为memcached在首次做存储的时候,如果是数值,也会自动转换为字符串进行存储,所以只要把第一行改为Future ff = mClient.set("test", 900, "2");,就没问题了
Future ff = mClient.set("test", 900, "2");
System.out.println("存储的值:"+mClient.get("test"));
mClient.incr("test", 5);
System.out.println("存储的值:"+mClient.get("test"));
//关闭连接
mClient.shutdown();
运行结果
=======
存储的值:2
存储的值:7