redis分布式鎖和synchronized(使用redis實(shí)現(xiàn)分布式鎖及其優(yōu)化)

發(fā)布時(shí)間:2023-09-05
本文主要介紹redis分布式鎖和同步(用redis實(shí)現(xiàn)分布式鎖及其優(yōu)化),下面一起看看redis分布式鎖和同步(用redis實(shí)現(xiàn)分布式鎖及其優(yōu)化)相關(guān)資訊。
最近博主在看redis的時(shí)候發(fā)現(xiàn)了redis的兩種。與redis之前的緩存不同,他們使用了redis的有效時(shí)間設(shè)置鍵和brpop redis命令。分布式鎖因?yàn)橛行┚幊陶Z(yǔ)言,比如php,不能使用內(nèi)存中的鎖,或者需要java,需要驗(yàn)證更簡(jiǎn)單的鎖的時(shí)候,使用redis分布式鎖是不夠的。redis 的分布式鎖實(shí)際上是基于setnx方法和設(shè)置redis 的功能很簡(jiǎn)單。public boolean try lock(string lock,長(zhǎng)過(guò)期時(shí)間){ string expiration = string . value of(system。currenttimemillis過(guò)期時(shí)間1);長(zhǎng)期結(jié)果= jedis.setnx(鎖定,過(guò)期);if(effect = = 1){ jedis . expire(lock,expire time);返回true;}判斷鍵不能刪除/超時(shí)字符串的current = jedis . get(lock);if (long.parselong(有效值) amplt;system . current time millis){ jedis . set(lock,expired);jedis.expire (lock,expire time);返回true;}返回false;} expiration是密鑰的值。這里是為了防止鎖在其他線程的鎖超時(shí)后被運(yùn)行和刪除。public unlock (string lock,string expiration){ string value = jedis . get(lock);if(值)!=空值!= expiration long.parselong(值)系統(tǒng)。currenttimemillis)jedis . del(lock);下面是鎖定和解鎖的方法。我寫(xiě)了一個(gè)基于redis的機(jī)制。不再推薦使用setnx,而是直接使用set命令集(lock,expiration,nx,expiretime,ex),可以直接影響setnx。消息隊(duì)列消息隊(duì)列主要用于網(wǎng)絡(luò)服務(wù)中的異步任務(wù)。redis可以作為消息隊(duì)列來(lái)實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者模式和訂閱/發(fā)布模式。生產(chǎn)者/消費(fèi)者模型生產(chǎn)者/消費(fèi)者模型需要生產(chǎn)者和消費(fèi)者。在redis中,對(duì)于消息隊(duì)列的應(yīng)用,隊(duì)列的存儲(chǔ)和訪問(wèn)可以由生產(chǎn)者和消費(fèi)者來(lái)實(shí)現(xiàn)。這是用java寫(xiě)的代碼,用redis命令解釋。事實(shí)上,它 使用或lpush隊(duì)列緩沖區(qū)在任務(wù)隊(duì)列中對(duì)任務(wù)進(jìn)行排隊(duì)有點(diǎn)棘手。real redis lpush和rpush,意思是左右插隊(duì)。這是一個(gè)任務(wù),屬于生成器的一部分,并插入到指定的隊(duì)列中。有些消費(fèi)者有些類(lèi)似,就是用的brpop隊(duì)列10。當(dāng)然brpop這里也有對(duì)應(yīng)的blpop。因?yàn)榕抨?duì)是為了任務(wù),所以這邊的左右兩邊都做到了。需要指出的是,使用brpop和crop brpop的另一個(gè)原因是等待,它的數(shù)量級(jí)是10,這是一個(gè)以秒為單位的等待時(shí)間。如果隊(duì)列是空的,那么我贏了。;t返回,我將等待10秒鐘,如果有新任務(wù)插入到進(jìn)程中,那么我將返回新任務(wù),如果沒(méi)有,我將返回null。此外,brpop還支持優(yōu)先級(jí),即brpop queue 1 queue: queue: 2 3 10,表示連續(xù)獲取。如果隊(duì)列1沒(méi)有。;t獲取任務(wù),進(jìn)入隊(duì)列:2獲取任務(wù),然后返回隊(duì)列。訂閱/發(fā)布模型訂閱/發(fā)布模型就是發(fā)布者將任務(wù)發(fā)送給所有訂閱者。任何訂戶都可以獲得該任務(wù)。redis在這里是通過(guò)使用subscription命令執(zhí)行的。發(fā)布者可以使用任務(wù)發(fā)布通道發(fā)布相關(guān)任務(wù),用戶使用訂閱通道。這是一個(gè)監(jiān)控命令。redis會(huì)監(jiān)控這個(gè)頻道。如果一個(gè)新任務(wù)的發(fā)布者,它將監(jiān)控該命令返回的任務(wù),直到用戶主動(dòng)退出監(jiān)控。但是redis也超過(guò)了時(shí)間保證的受眾有效性。如果在20世紀(jì)60年代沒(méi)有收到消息,則默認(rèn)為默認(rèn)值。當(dāng)然,這是可以配置的。以上是本文的全部?jī)?nèi)容,希望能對(duì)你有所幫助,也希望你多多支持。
了解更多redis分布式鎖和同步(用redis實(shí)現(xiàn)分布式鎖及其優(yōu)化)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。
上一個(gè):回收電腦哪個(gè)平臺(tái),電腦回收哪個(gè)平臺(tái)好
下一個(gè):茶花育苗技術(shù)

開(kāi)關(guān)電源短路保護(hù)電路
文竹為什么發(fā)黃?怎樣預(yù)防?
這些普洱茶的故事你肯定沒(méi)見(jiàn)過(guò)
倒鉤接頭norgren是一種機(jī)電一體化的輸送系統(tǒng)連接器特點(diǎn)
基坑檢測(cè)有哪些監(jiān)測(cè)內(nèi)容?
韓國(guó)autonics雙數(shù)字顯示壓力傳感器進(jìn)口psq 系列
怎樣使盆栽花卉出房?
紅手指云手機(jī)蘋(píng)果怎么用(紅手指云手機(jī)蘋(píng)果下載安裝)
怎樣看MAC地址(怎么看蘋(píng)果電腦的mac地址)
進(jìn)口交流無(wú)間隙金屬氧化物避雷器吸收操作過(guò)電壓的能量估算公式有哪些?
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos