您的位置:首页 > 大数据 > 人工智能

TairResult 缓存 计数器的使用

2016-02-16 12:16 375 查看
我的使用场景,是通过第一个接口,查询到一个数值(剩余的量),第二个接口,减去这个接口传上来的订单数值,返回剩余的数值。

所以,打算采用计数器解决。

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: