Redis实现分布式锁
一.分布式锁需要解决的问题
二.使用命令
SETNX key value :如果key不存在,则创建并赋值
set if-Not-Exist
意思就是a线程执行就是1 其它线程过来就是0 要等a结束过期 其它线程过来就1了
三.如何解决SETNX长期有效问题
1.伪代码【有风险】原子性!!因为它变成了俩个操作了
expire设置过期时间 如果在设置过期时间前挂掉了 就被永久占用 key
2.redis版本2.6后 将 setnx 和 expire变为一个操作
重要:
操作:
四.
补充:
到了过期时间,业务代码还没有执行完成 怎么办?
1.守护线程
2.redisson看门狗【其实也守护线程】