redisson使用教程 Redis分布式鎖的原理是什么?如何續(xù)期?
Redis分布式鎖的原理是什么?如何續(xù)期?分布式鎖的需求伴隨著應(yīng)用的分布式部署。在單個(gè)應(yīng)用程序只部署一臺(tái)服務(wù)器的情況下,可以通過Java同步鎖來實(shí)現(xiàn)。同步鎖是一種原子操作。當(dāng)應(yīng)用程序以分布式方式部署并
Redis分布式鎖的原理是什么?如何續(xù)期?
分布式鎖的需求伴隨著應(yīng)用的分布式部署。在單個(gè)應(yīng)用程序只部署一臺(tái)服務(wù)器的情況下,可以通過Java同步鎖來實(shí)現(xiàn)。同步鎖是一種原子操作。
當(dāng)應(yīng)用程序以分布式方式部署并且具有多個(gè)服務(wù)時(shí),應(yīng)用服務(wù)器將無法提供原子操作。Redis具有高性能,而且是單線程的,因此它可以為原子操作提供一個(gè)場所。有了它,就可以實(shí)現(xiàn)分布式鎖。
什么時(shí)候需要分布式鎖?
首先,我們需要知道在非分布式環(huán)境中使用鎖可以解決什么問題?
多線程環(huán)境,共享資源線程安全問題!此時(shí),共享資源通常在一臺(tái)機(jī)器的多線程中競爭。從JAVA內(nèi)存模型的角度來看,我們可以通過鎖定對(duì)象、方法和代碼塊來避免共享資源的競爭
!1,生成全局ID;
2,修改全局配置文件;
3,分布式服務(wù)中的seckill;
4,分布式環(huán)境中的重復(fù)提交;
1,使用數(shù)據(jù)庫的唯一主鍵實(shí)現(xiàn)鎖定
!2、使用redis指令:通常使用setnx方法,incr方法實(shí)現(xiàn)
3、使用zookeeper:使用API生成臨時(shí)節(jié)點(diǎn)實(shí)現(xiàn)鎖定
redis分布式鎖怎么解決02master宕機(jī)后,鎖還能正常使用?
為了使集群在某些節(jié)點(diǎn)離線或無法與集群中的大多數(shù)節(jié)點(diǎn)通信時(shí)正常工作,redis cluster對(duì)節(jié)點(diǎn)使用主從功能:集群中的每個(gè)節(jié)點(diǎn)都有一到n個(gè)復(fù)制,其中一個(gè)是主節(jié)點(diǎn),而另一個(gè)n-1個(gè)產(chǎn)品是從節(jié)點(diǎn)。
redis分布式鎖宕機(jī)怎么處理?
為了防止因停機(jī)而釋放鎖,需要在添加鎖時(shí)設(shè)置過期時(shí)間。當(dāng)鎖關(guān)閉時(shí),鎖將自動(dòng)釋放,直到過期時(shí)間。