你用Redis的setnx+expire实现分布式锁,如果锁被提前删了,另一个线程进来了,造成数据错误怎么办?
考察说明
考察分布式锁误删与互斥失效的识别、预防和修复能力
回答思路
- 指出锁被提前删除的常见场景:过期自动释放或删除时误删他人锁
- 说明防止误删的关键:加锁时写入唯一标识,解锁前校验持有者
- 说明原子性保证:使用Lua脚本完成校验与删除
- 讨论锁过期时间设置与续期机制
- 讨论更严格一致性场景下的替代方案,如Redisson或fencing token
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。