请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

发放不同编号优惠券的时候,加的lockLucky锁,并没有阻塞,也没有判断枷锁是否成功,是不是会出问题呢

正在回答 回答被采纳积分+3

1回答

一凡 2019-07-31 22:11:09


func lockLuckyServ(uid int) bool {
  key := getLuckyLockKey(uid)
  cacheObj := datasource.InstanceCache()
  rs, _ := cacheObj.Do("SET", key, 1, "EX", 3, "NX")
  if rs == "OK" {
     return true
  } else {
     return false
  }
}

这一段就是用redis实现的分布式锁,是可以保证并发的互斥性,锁的时候并不是阻塞请求,而是直接获取锁失败。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标3951566 #1
    是看到视频中prizedata.PrizeCodeDiff方法中是从数据库中取的编码(NextUsingCode),取编码之前发现加的分布式锁并没有判断是否加成功,但是看到后续视频,并查对了源码,已经改造为redis.SPOP命令发放不同编码优惠券,也就没有这个问题了
    回复 有任何疑惑可以回复我~ 2019-08-05 21:40:30
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信