试题答案

更新日期:2023-11-20

Redis实现分布式锁的基本步骤如下:
1、加锁:使用setnx加锁。

//如果lock存在则返回0,否则返回1
setnx lock 1

key是锁的唯一标识,value可以是任意值。当一个线程执行setnx时返回1,说明key不存在,此线程即成功获得了锁;否则如果返回0,说明key已存在,线程抢锁失败,需要等待。
2、设置超时时间:使用expire设置过期时间。

//设置lock键30秒后过期
expire lock 30

设置超时时间是因为如果上锁的线程在执行过程中出现错误而退出,会导致锁无法被释放,则其它线程永远无法获取到此锁,造成线程的死锁,所以设置超时时间以保证即使锁没有被显式释放,也会在一段时间后自动释放。
3、释放锁:使用del删除键。

//删除ock
del lock

当线程执行完任务需要释放锁,以便其他线程可以进入。


发表评论

评论数量:0