最近工作中碰见一个限制发短信次数的场景
最开始我是这么写的:
if(Redis::exists($locKey)) if(Redis::incr($locKey) > 1) echo '请勿重复发送';
后来被经理改成了这样:
if(Redis::incr($locKey) > 1) echo '请勿重复发送';
后来询问了下 说INCR具有原子性操作,但是没有深入说,自己研究了下,其实所有redis 单个命令都有原子性 但是按上面的写法的话 高访问量 两个请求同时访问的极端情况下会有数据不准的现象出现 况且incr里已经判断了key是否存在,所以一个incr就能解决了,exists很多此一举.