我在使用ocs时,add,set,replace等常用方法正常。但incr和decr方法有问题。调用该方法时,返回值为-1,即找不到对应的key;不管时刚插入的,还是其他程序插入的,单元测试代码中插入的,都是这样的。
我换过一次测试用的key,成功了。但再次调用,又不行了。
诡异的很。
代码如下:就这么简单,都不行
String key = "womancount";
memcachedClient.add(key, 600, 550);
System.out.println(memcachedClient.get(key));
System.out.println(memcachedClient.incr(key, 3));
System.out.println(memcachedClient.get(key));
已经解决了,不是bug,是memcached内部实现细节问题;
如果想用incr/decr操作某一对象时,这个对象在缓存中必须是整形的。如果想正确使用上述两个方法,在初始化目标对象时,要用字符串类型操作,即:
memcachedClient.add(key, 600, "550"); // 这样就可以了。
具体原理大家可以去看一下memcached的wiki。
也可以看这个文档:http://my.oschina.net/flashsword/blog/93109
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。