后端岗位面试题更新 2026-08-05

请阐述在 Redis 中实现分布式锁的具体方案与要点。

后端开发风险判断系统设计方案权衡Redis

考察说明

考查候选人对 Redis 实现分布式锁的核心机制、可靠性和风险的理解。

回答思路

  1. 【回答框架 1】分布式锁用于在分布式系统中协调多节点对共享资源的互斥访问。Redis 实现分布式锁的核心是 SET 命令的 NX 和 EX 参数,结合 Lua 脚本保证原子性。
  2. 【回答框架 2】典型实现:加锁时使用 SET lock_key unique_value NX EX 设置过期时间,避免死锁;解锁时通过 Lua 脚本比对唯一标识并删除,防止误删其他线程的锁。
  3. 【回答框架 3】可靠性考量:单机 Redis 存在主从切换导致锁丢失风险,Redlock 算法在多个独立节点上获取锁以提升安全性,但 Redlock 仍存在争议,需结合业务场景权衡。
  4. 【回答框架 4】锁的粒度、持有时间和业务操作时长需要匹配,合理设置过期时间并考虑续期机制,避免业务未完成锁已过期。
  5. 【关键点 1】SET key value NX EX 实现加锁,保证原子性。
  6. 【关键点 2】使用唯一标识(如 UUID)防止误删锁。
  7. 【关键点 3】释放锁必须用 Lua 脚本原子操作。
  8. 【关键点 4】Redlock 算法提高可用性但非绝对可靠。
  9. 【关键点 5】锁过期时间需大于业务处理时间,必要时自动续期。
  10. 【易错点 1】直接使用 DEL 释放锁可能删除他人持有的锁,必须校验唯一标识。
  11. 【易错点 2】单机 Redis 主从切换时可能锁丢失,Redis 集群需考虑 Redlock 或替代方案。