一、我们之前遇到了什么问题?(必须先懂)我们之前写释放锁的代码是这样的:java运行 // 1. 判断锁是不是自己的 String id = stringRedisTemplate.opsForValue().get(key); if(threadId.equals(id)){ // 2. 是自己的,才删除 stringRedisTemplate.delete(key); } 这段代码不是原子的!它分成 2 步:查(判断是不是我的锁)删(释放锁)高并发下会发生恐怖的事情:线程 A 查询 → 是我的锁刚查完,突然卡住了!锁超时过期 → Redis 自动删了线程 B 抢到锁线程 A 恢复 → 直接...