redis分布式锁
分布式锁需要解决的问题:多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问,防止脏数据产生
- 互斥性 只有一个客户端获取锁
- 安全性 锁只能由持有概客户端的删除 不能由其他客户端删除
- 死锁 一个客户端获取到锁,导致宕机,而其他客户端无法获取到资源
- 容错 一个节点宕机,客户端任然能获取锁和释放锁
性能: 访问量大的共享资源,需要考虑减少锁等待的时间
- 锁的颗粒度要小
- 锁的范围尽量要小
重入: 同一线程可以重复拿到同一资源
Redis 分布式锁的缺陷:redis 哨兵模式下 对某个master节点写入redisson锁 异步复制给对应的slave节点 一旦宕机slave变成master 客户端2加锁 master上也能加锁 对同一个分布式锁加锁 脏数据