redis实现分布式锁,可以采用setnx,给它设置过期时间避免死锁,也可以用lua脚本实现
redis分布式锁需要满足五个条件:
1.互斥性
不能去解锁别人的分布式锁
2.容错性
可以主从复制配合哨兵模式实现一个高可用,就是当哨兵监控的主库宕机,我们就把一个slaver升级成master
3.不能死锁
我们可以设置过期时间,当过期时间到了就去删除这个锁
4.一致性
只有同一个客户端才能执行加锁和解锁
5.自动续期
当我们的程序还没执行完,但是锁到期了,就会被导致这个锁被别人拿到,为了解决这个问题,我们可以去使用redisson,他封装了一个API,就是可以给它设置自动续期