TairResult 缓存 计数器的使用

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

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


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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值