为了账号安全,请及时绑定邮箱和手机立即绑定

关于redis原子性测试的疑问?

关于redis原子性测试的疑问?

红颜莎娜 2018-07-05 07:11:42
我知道redis的单个操作是原子性的,如果在代码中对redis进行多次操作将无法保证整个操作流程的原子性。比如下面的这段代码中,假设nums这个key的值是50,使用ab.exe工具对其1000次访问,并发数是100,理论上结果应该会出现负数的.可是我多次测试下nums的值都是1,请问是我测试的方式不对还是其他哪里有问题呢?$nums = $redis->get('nums');if($nums > 1)     $redis->decr('nums');
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

你写了判断呀,大于1的时候才递减1
你减到1的时候都不执行了,他怎么能作为测试原子性的依据呢?

查看完整回答
反对 回复 2018-07-20
?
Helenr

TA贡献1780条经验 获得超3个赞

你这样的并发很难测试出来的,的确这样操作存在负数的可能。但是想想你的电脑是 4核8线程,最多同时执行8个请求而已,这对redis来说是非常小的并发量了。所以我认为不出现问题是因为并发量小了,实际上是会存在问题的。

查看完整回答
反对 回复 2018-07-20
  • 2 回答
  • 0 关注
  • 1492 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信