redis之分布式锁原理

1. 因为redis中键名只能存在一个,所以可以用键名来做锁,其值可以作为可重入锁;

2.初始加锁,setex 命令设置 setex key 1, 如果成功则加锁成功,如果没有成功则加锁失败。

3.加锁成功后设置有效期,可和2做lua脚本一块执行,然后在有效期内定时延长有效期时间,这样做的原因是万一加锁成功后程序死掉,在有效期过后还可继续。

4.可重入锁,在同一线程加锁成功后,再次加锁,将value+1,当释放锁时将value-1,当value的值为0时,删除key。锁释放完毕。

 

posted @ 2020-04-25 23:12  jtfmzl  阅读(134)  评论(0)    收藏  举报