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

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

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值