分享一个redis很简单却又很极致的操作(INCRBY指令)

今天无意中搜到了一个redis的操作,算是把redis指令发挥到了极致了。

要解决的问题:用户签到,一天只能签到一次。

由于redis开启了主从模式,写走主库,读走从库,如果用普通的set和get指令,万一面对高并发情况,刚刚在主库set完,还没到同步到从库的时候,去从库get,得到的还是未签到的状态,导致可能会重复签到多次。

然后骚操作开始:利用 INCRBY key increment 指令,这样每次都是操作主库,由于 INCRBY 的特性,key不存在时会自动初始化为0,然后加1,返回值是加完1后的值。这样我只需要判断,如果返回值大于1,那就说明这个用户已经签到过了,那就不继续执行,直接返回了。完美避免了写主库读从库可能产生的不一致性。

猜你喜欢

转载自blog.csdn.net/jeffrey11223/article/details/79176733