TairResult 缓存 计数器的使用
2016-02-16 12:16
375 查看
我的使用场景,是通过第一个接口,查询到一个数值(剩余的量),第二个接口,减去这个接口传上来的订单数值,返回剩余的数值。
所以,打算采用计数器解决。
1,为计数器设值
这个方法,如果version控制不好的话,容易有并发问题。
所以,我采用了 下面提到的 方法4,decr(namespace, key,value, defaultValue, expireTime);传入value0,传入默认值即可,来解决。
这样做的确一部分情况下解决了不关心version的问题,但不知道会不会出现其它问题。目前还未发现异常。
2,获得计数器的值
这个方法也可以获取到存在服务器的key的值。
3,增加计数器的值
4,减去计数器的值
5,失效某个key
以上,就是我需要用到的计数器方法。
解决思路,如下,
第一个接口,查询数值,是否有值,有值则直接返回,无值,则初始化值。
第二个接口,减去订单的值会返回剩余的值,判断剩余的值,如果小于0则是减完了(并发情况下是会出现小于0的情况),返回0。
所以,打算采用计数器解决。
1,为计数器设值
* @param key * @param count要设置的值 * @param version 不关心并发传入0 * @param expireTime 不关心过期传入0 setCount(namespace, key, count, version, expireTime);
这个方法,如果version控制不好的话,容易有并发问题。
所以,我采用了 下面提到的 方法4,decr(namespace, key,value, defaultValue, expireTime);传入value0,传入默认值即可,来解决。
这样做的确一部分情况下解决了不关心version的问题,但不知道会不会出现其它问题。目前还未发现异常。
2,获得计数器的值
* @param namespace * @param key get(namespace, key);
这个方法也可以获取到存在服务器的key的值。
3,增加计数器的值
* @param namespace * @param key * @param value本次增加的数量 * @param defaultValue当计数器不存在时的初始化值 * @param expireTime incr(namespace, key,value,defaultValue, expireTime);
4,减去计数器的值
* @param namespace * @param key * @param value本次减少的数量 * @param defaultValue当计数器不存在时的初始化值 * @param expireTime decr(namespace, key,value, defaultValue, expireTime);
5,失效某个key
* 通过invalid server删除,对应集群中的key都会被删除 * 参数: * namespace - area * key -这个key从两边机房里都删除 invalid(namespace, key);
以上,就是我需要用到的计数器方法。
解决思路,如下,
第一个接口,查询数值,是否有值,有值则直接返回,无值,则初始化值。
第二个接口,减去订单的值会返回剩余的值,判断剩余的值,如果小于0则是减完了(并发情况下是会出现小于0的情况),返回0。
相关文章推荐
- 正常使用谷歌搜索引擎和Gmail的方法!
- 在mac上配置git send-email使用gmail
- Contains Duplicate,Contains Duplicate II,Contains Duplicate III
- 【DP】AIM Tech Round (Div. 2) D
- QMainWindow布局和QDialog布局的区别
- 500 OOPS: vsftpd: refusing to run with writable anonymous root Login failed.
- cvpr读书笔记[3]:traincascade与AdaBoost的opencv实现框架
- may be using a version of Gradle that does not contain the method.
- Failed to locate or generate matching signing assets Xcode attempted to locate or generate matching
- HDU 2675 Equation Again
- 【机器学习实战】Naive Bayes
- Snaigt 12.4.0 的使用和Snagit KEY
- 使用mdadm创建软raid
- 对Python内存管理的认识(重点usedpool的一个trick的理解)http://blog.csdn.net/wangyuquanliuli/article/details/8606072
- hdu acm 1532 Drainage Ditches
- Match:DNA repair(POJ 3691)
- Nessus6.5.4安装及Plugins Download Fail 解决方法
- Table 'hd_online' is marked as crashed and should be repaired索引损坏
- LeetCode 217. Contains Duplicate 哈希
- 程序运行出现process launch failed: Security