redis分布式鎖 理解的不全面

2021-08-26 09:14:51 字數 736 閱讀 8192

因為自己做的專案是支付系統,呼叫第三方支付的,公司用的是redis分布式鎖,從開始知道專案中用的是redis鎖到現在想寫這篇關於redis鎖的文章,差不多半年了,這個過程也是有時間才看看,斷斷續續的,現在寫下來,也沒有完全的理解專案中的鎖是怎麼實現的,但是這個過程中對redis鎖有個大概的了解了,這邊文章沒有太多的參考價值,只是自己在專案中遇到的問題,我的boss也沒有給我答覆,我間接的想知道為什麼,boss只是跟我說要是真的有問題,生成環境早都出問題,沒有問題你不要懷疑,再去看看吧,就這樣被打發回來了

問題:在**中執行testng跑的時候根據key在redis上給key賦值為long型別的時間戳,支付的時候加上鎖,最後執行finally 時,釋放鎖,執行的是del命令,但是執行完再看對應的key沒有被刪除,看**是當前的時間戳要小於等於設定的時間戳的判斷不滿足(為什麼是當前時間戳+5000*2+1標紅部分)**如下:

private boolean acquirelock(long locktime)  else 

}return false;

}}

順便把解鎖的**也show下:

public void unlock() 

}} catch (exception var2)

}

度娘了關於redis鎖的實現,有很多方法,因為最近把redis的pdf過一篇,想研究一遍,度娘看到使用指令碼的方式實現redis分布式鎖,只是掃了一遍,想表達的是實現redis分布式鎖有很多實現方式,不一定要用這種方式

redis分布式鎖的理解

分布式鎖 分布式鎖本質是佔乙個坑,當別的程序也要來佔坑時發現已經被佔,就會放棄或者稍後重試 佔坑一般使用 setnx set if not exists 指令,只允許乙個客戶端佔坑 先來先佔,用完了在呼叫del指令釋放坑 setnx lock codehole true do something c...

redis分布式鎖

redis分布式鎖 直接上 我寫了四個redis分布式鎖的方法,大家可以提個意見 第一種方法 redis分布式鎖 param timeout public void lock long timeout thread.sleep 100 catch exception e override publi...

Redis分布式鎖

分布式鎖一般有三種實現方式 1.資料庫樂觀鎖 2.基於redis的分布式鎖 3.基於zookeeper的分布式鎖.首先,為了確保分布式鎖可用,我們至少要確保鎖的實現同時滿足以下四個條件 互斥性。在任意時刻,只有乙個客戶端能持有鎖。不會發生死鎖。即使有乙個客戶端在持有鎖的期間崩潰而沒有主動解鎖,也能保...