码迷,mamicode.com
首页 > 其他好文 > 详细

redis分布式锁原理

时间:2018-01-19 23:31:37      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:room   允许   set   一个   body   redis分布式   否则   就是   原理   

举例子:秒杀方式看医生,一个人看5min

1.第一次只允许一个人直接进行来,X10:00:00进去了,setNX(roomid,now+5min),出来时间假如是10:05:00

2.时间到了10:05:00,3个人同时进来,需要去看墙上的钟表,一个人一个的看

     A进入病房看到,看到钟表时间10:05:00,得到时间10:05:00,看完时候的时间是10:05:01

     B进入病房看到,看到钟表时间10:05:01,得到时间10:05:01,看完时候的时间是10:05:02

     C进入病房看到,看到钟表时间10:05:02,得到时间10:05:02,看完时候的时间是10:05:03

最后发现A的时间和进来的时间一致,所以得到看病机会,看完的时间将是 10:10:00,如此循环。

redis原理:

1.setNX(roomid,now+5min),roomid不存在就进行设置,并且返回1,否则不进行设置,并返回0;

2.getset(roomid,time),同步,只能一个设置完成下一个才进行设置,也就是有先后,同时得到返回值,roomid对应的值,也就是上一个人设置留下的时间。对比为设置前的时间,一致的可以获得锁。

等待过期,下一轮的人可以进行设置

redis分布式锁原理

标签:room   允许   set   一个   body   redis分布式   否则   就是   原理   

原文地址:https://www.cnblogs.com/longsanshi/p/8319029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!