diff --git a/数据存储/Redis/Redlock分布式锁.md b/数据存储/Redis/Redlock分布式锁.md index 6a697a0a..b1742f2f 100644 --- a/数据存储/Redis/Redlock分布式锁.md +++ b/数据存储/Redis/Redlock分布式锁.md @@ -45,6 +45,3 @@ end ## 性能、崩溃恢复和 fsync 如果我们的节点没有持久化机制,client 从 5 个 master 中的 3 个处获得了锁,然后其中一个重启了,这是注意 **整个环境中又出现了 3 个 master 可供另一个 client 申请同一把锁!** 违反了互斥性。如果我们开启了 AOF 持久化那么情况会稍微好转一些,因为 Redis 的过期机制是语义层面实现的,所以在 server 挂了的时候时间依旧在流逝,重启之后锁状态不会受到污染。但是考虑断电之后呢,AOF部分命令没来得及刷回磁盘直接丢失了,除非我们配置刷回策略为 fsnyc = always,但这会损伤性能。解决这个问题的方法是,当一个节点重启之后,我们规定在 max TTL 期间它是不可用的,这样它就不会干扰原本已经申请到的锁,等到它 crash 前的那部分锁都过期了,环境不存在历史锁了,那么再把这个节点加进来正常工作。 - -## License -* 原文 [基于 Redis 的分布式锁 Redlock](https://zhuanlan.zhihu.com/p/40915772) \ No newline at end of file