分布式锁问题

来源:14-3 分布式锁双重防死锁演进

慕粉3884565

2019-01-29

代码中加了两重锁http://img.mukewang.com/szimg/5c4feb5e0001f36919201048.jpg这里吗

写回答

1回答

geelylucky

2019-01-29

亲爱的同学,你好,我是geely老师的助教。

首先需要声明一下,这个value存储的是一个时间戳的字符串。它代表将来的某一刻,也就是所谓的过期时间点。

  1. 当前没有上锁的时候,是可以通过setnx直接获取锁的,拿到锁后直接关闭订单。

  2. 如果当前已经被别人拿到锁了,那就去取出当前锁的value,和当前时间对比是否过期,如果已经过期了,使用getset把新的过期时间设置进去,并且拿到旧的值,之所以要这么做,是为了保证并发安全,只有取出来的旧值和之前取出来的value相等的时候,才说明真正的获取了分布式锁,否则就是竞争失败。


1
0

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程