Redis实现分布式锁的思路
关键点setnx命令
加锁成功的线程,在释放锁之前gg了,嘿嘿,不好意思我key还在那,another threads在去setnx,always-false。
怎么解决?
对key进行expire 处理,不过呢,setnx-expire保证是一个原子操作,否则的话又回退到了key还在那,怎么办的的问题。
不好意思,又来了一个问题,我还没执行完,锁就无了。又是一个脑瓜疼的问题。
怎么办呢?很简单,续命呗,那怎么个续命法,不就是开辟一个线程,执行定时任务对key reset expire time ,just so so。就是这么简单的思想。
还有一个问题,无锁释放锁的question,how to resolve???
这不更简单,借助threadlocal+uuid,不就解决了。
再来一个脑瓜疼的问题???主从异常导致锁实现了问题,please answer the question。
哇嘎嘎,最难得才是这个问题,前面都是小菜。不就是把redisson的redlock讲一下下,就ok了。just so easy。