Redis分布式锁的使用和实现原理详解
模拟一个电商里面下单减库存的场景。假如两个线程都做减库存更新缓存,那么缓存的库存变成99,但实际上,应该是减掉2个库存。那么改完的第二版的代码如下:但使用synchronize存在的问题,就是只能保证单机环境运行时没有问题的。一定要记得在finally里面把使用完的锁要删除掉。否则一旦抛出异常,只有一个线程会一直持有锁,其他线程没有机会获取。但是Lua实际上不会使用很多,如果Lua脚本执行时间过长,因为Redis是单线程,因此会导致堵塞。到此为止,分析完毕。