加锁和释放锁,都需要原子操作,不然在中途中断就会发生异常,
删锁的时候也只能删除自己对应线程的锁。下面是用sexNX命令加锁的模板
加锁失败后,休眠一段时候后,再次调用(自旋锁)
这个还是会有一个问题,
如果加锁的时间是30秒,业务执行的时候了40秒,这个其他的线程就能抢到锁,所以加锁的时间必须大于业务执行的时间
官方文档
http://redis.cn/commands/set.html
建议 使用redisson来用分布式锁
加锁和释放锁,都需要原子操作,不然在中途中断就会发生异常,
删锁的时候也只能删除自己对应线程的锁。下面是用sexNX命令加锁的模板
加锁失败后,休眠一段时候后,再次调用(自旋锁)
这个还是会有一个问题,
如果加锁的时间是30秒,业务执行的时候了40秒,这个其他的线程就能抢到锁,所以加锁的时间必须大于业务执行的时间
官方文档
http://redis.cn/commands/set.html
建议 使用redisson来用分布式锁