Redis分布式锁 是怎么回事?【最新详细解答】

今天爱分享给大家带来Redis分布式锁 是怎么回事?【最新详细解答】,希望能够帮助到大家。

先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。

但是在setnx之后执行expire之前进程意外crash或者要重启维护了,会造成锁永远得不到释放了。

原因:

Redis的setnx命令是当key不存在时设置key,但setnx不能同时完成expire设置失效时长,不能保证setnx和expire的原子性。

解决办法:

使用set命令完成setnx和expire的澡作,保证澡作是原子性的
从 Redis 2.6.12 版本开始,set指令有非常复杂的参数,可以同时把setnx和expire合成一条指令来用

set key value [EX seconds] [PX milliseconds] [NX|XX]
EX seconds:设置失效时长,单位秒
PX milliseconds:设置失效时长,单位毫秒
NX:key不存在时设置value,成功返回OK,失败返回(nil)
XX:key存在时设置value,成功返回OK,失败返回(nil)

原文链接:https://blog.itblood.com/1012.html,转载请注明出处。
0
凤凰V15官中版[PC+安卓/5.11G/更新] [神作SLG/官中/动态]
凤凰V15官中版[PC+安卓/5.11G/更新] [神作SLG/官中/动态]
3分钟前 有人购买 去瞅瞅看

站点公告

显示验证码
没有账号?注册  忘记密码?