Redis——》Redis的部署方式对分布式锁的影响

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Redis——》Redis的部署方式对分布式锁的影响

  • 一、Redis常见的部署方式
  • 二、生产环境一般采用的部署方式
  • 三、当主从发生切换时,分布式锁依旧安全吗?
    • 1、场景
    • 2、现象
    • 3、结论

一、Redis常见的部署方式

  • 单机模式
  • 主从模式
  • 哨兵(sentinel)模式
  • 集群模式

二、生产环境一般采用的部署方式

主从+哨兵

Q:主从+哨兵结合模式,有什么优点?
A:
普通的主从模式:当master崩溃时,需要手动切换让slave成为master。
主从+哨兵结合模式:当master异常宕机时,哨兵可以实现故障自动切换,把slave提升为新的master,继续提供服务,以此保证可用性

三、当主从发生切换时,分布式锁依旧安全吗?

1、场景

  1. 客户端1在master上执行SET命令,加锁成功
  2. 此时,master异常宕机,SET命令还未同步到slave上(主从复制是异步的)
  3. 哨兵将slave提升为新的master,但这个锁在新的master上丢失了,导致客户端2来加锁成功了,两个客户端共同操作共享资源

Redis——》Redis的部署方式对分布式锁的影响_第1张图片

2、现象

发生锁数据丢失问题,因为主从复制是异步的,主库加了锁却没来得及同步到从库上,从库就被哨兵提升为新主库,所有这个锁在新的主库上,丢失了!

3、结论

当引入Redis副本后,分布式锁还是可能受到影响。即使Redis通过sentinel保证高可用,如果这个master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况。

你可能感兴趣的:(Redis,redis,锁,分布式,主从)