Skip to content

题目9:分布式锁设计 ​

📊 评分:— | 📅 完成时间:待完成


📝 题目 ​

如果让你设计一个分布式锁,你会怎么做?基于 Redis 的分布式锁有哪些关键点?有哪些常见问题?


💬 我的回答 ​


📖 参考答案 ​

一、核心目标 ​

  • 互斥
  • 避免死锁
  • 可重试
  • 最好支持续期和可观测

二、Redis 分布式锁常见实现 ​

redis
SET lock_key unique_value NX PX 30000

关键点:

  • NX:只在 key 不存在时加锁
  • PX:设置过期时间,避免死锁
  • unique_value:解锁时校验,避免误删别人的锁

三、安全释放锁 ​

需要用 Lua 保证校验 value 和删除 key 的原子性。

四、常见问题 ​

  • 业务执行时间超过锁过期时间
  • Redis 主从切换导致锁丢失
  • 锁竞争激烈时吞吐下降
  • 抢到锁的客户端宕机

五、延伸回答 ​

  • 看门狗续期机制
  • Redisson 实现思路
  • Redis 锁和 ZooKeeper 锁的区别

🎯 面试标准话术 ​

"Redis 分布式锁的核心不是 setnx 这一个命令,而是加锁、过期、续期、解锁原子性和主从切换一致性要一起考虑。面试里最好强调唯一 value 和 Lua 解锁,否则很容易被追问。"

努力工作 享受生活