1. 程式人生 > >redis分布式鎖原理

redis分布式鎖原理

clas 並且 例子 允許 要去 否則 先後 個人 nbsp

舉例子:秒殺方式看醫生,一個人看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分布式鎖原理