redis分布式锁

加一把内置锁

把读取库存和减库存放在一个原子操作中,只有一个线程可以执行这个原子操作,这个线程全部执行完后,这个内置锁才会释放,后续的线程才能加锁成功.

redis分布式锁

redis分布式锁

三个线程都访问这个方法,只有第一个能访问,其他两个线程result返回false

在分布式环境中,三个线程都访问这个方法,只有第一个能访问,其他两个线程result返回false,采用的方法是stringRedisTemplate.opsForValue().get("stack"),只有第一个能执行set,后面的,再执行时候,因为redis中已经有了这个key,这样的结果,后续代码智能放一个线程去执行.

redis分布式锁

 

redis分布式锁

有错误,最终要解锁

redis分布式锁

加锁的操作,redis的原子操作,保证在一定时间内加锁.保证加锁和超时是原子的.

redis分布式锁

某个线程加的锁可能会被别的线程释放,所以,判断是否是这个线程加的锁,才能释放

redis分布式锁

相关文章: