成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Redis 實(shí)現(xiàn)鎖

RiverLi / 3144人閱讀

摘要:基本原理就是使用的命令來(lái)實(shí)現(xiàn)。將的值設(shè)為,當(dāng)且僅當(dāng)不存在。設(shè)置失敗時(shí),說(shuō)明這個(gè)鎖正在使用中。在一定時(shí)間內(nèi),循環(huán)請(qǐng)求,直到當(dāng)前鎖釋放,然后獲得鎖實(shí)例前文中連接的方法獲取鎖失敗此處進(jìn)行操作,操作完成后釋放鎖防止死鎖,超過(guò)分鐘刪除參考資料。

導(dǎo)語(yǔ)

需求就不細(xì)說(shuō)了,想必都遇到過(guò)要用數(shù)據(jù)鎖的場(chǎng)景。看了一些資料以及其他的代碼,修改記錄下。

SETNX

基本原理就是使用 Redis 的 SETNX 命令來(lái)實(shí)現(xiàn)。

key 的值設(shè)為 value ,當(dāng)且僅當(dāng) key 不存在。

若給定的 key 已經(jīng)存在,則 SETNX 不做任何動(dòng)作。

SETNX 是『SET if Not eXists』(如果不存在,則 SET)的簡(jiǎn)寫(xiě)。

返回值:

設(shè)置成功,返回 1

設(shè)置失敗,返回 0 。

設(shè)置失敗時(shí),說(shuō)明這個(gè)鎖正在使用中。在一定時(shí)間內(nèi),循環(huán)請(qǐng)求,直到當(dāng)前鎖釋放,然后獲得鎖

實(shí)例
setnx($redisKey, $redisValue);
        if (!$flag) {
            // 獲取鎖失敗
            usleep(200000);
            continue;
        }

        // 此處進(jìn)行操作,操作完成后釋放鎖
        $redis->del($redisKey);
        return true;
    }

    // 防止死鎖,超過(guò) 5 分鐘刪除
    if (time() - $redis->get($redisKey) > (60 * 5)) {
        $redis->del($redisKey);
    }
    return false;
}


參考資料:SETNX。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30076.html

相關(guān)文章

  • 百度社招面試題——如何用Redis實(shí)現(xiàn)分布式

    摘要:集群實(shí)現(xiàn)分布式鎖上面的討論中我們有一個(gè)非常重要的假設(shè)是單點(diǎn)的。但是其實(shí)這已經(jīng)超出了實(shí)現(xiàn)分布式鎖的范圍,單純用沒(méi)有命令來(lái)實(shí)現(xiàn)生成。這個(gè)問(wèn)題用實(shí)現(xiàn)分布式鎖暫時(shí)無(wú)解。結(jié)論并不能實(shí)現(xiàn)嚴(yán)格意義上的分布式鎖。 關(guān)于Redis實(shí)現(xiàn)分布式鎖的問(wèn)題,網(wǎng)絡(luò)上很多,但是很多人的討論基本就是把原來(lái)博主的貼過(guò)來(lái),甚至很多面試官也是一知半解經(jīng)不起推敲就來(lái)面候選人,最近結(jié)合我自己的學(xué)習(xí)和資料查閱,整理一下用Redi...

    YanceyOfficial 評(píng)論0 收藏0
  • Redis分布式

    摘要:之分布式鎖的實(shí)現(xiàn)方案如何優(yōu)雅地實(shí)現(xiàn)分布式鎖博客地址分布式鎖關(guān)鍵詞分布式鎖是控制分布式系統(tǒng)之間同步訪(fǎng)問(wèn)共享資源的一種方式。 Redis之分布式鎖的實(shí)現(xiàn)方案 - 如何優(yōu)雅地實(shí)現(xiàn)分布式鎖(JAVA) 博客地址 https://blog.piaoruiqing.cn/2019/05/19/redis分布式鎖/ 關(guān)鍵詞 分布式鎖: 是控制分布式系統(tǒng)之間同步訪(fǎng)問(wèn)共享資源的一種方式。 spring-d...

    LeoHsiun 評(píng)論0 收藏0
  • PHP 使用 Redis 實(shí)現(xiàn)分布式

    摘要:由于執(zhí)行的原子性所以不要在中執(zhí)行過(guò)長(zhǎng)開(kāi)銷(xiāo)的程序,否則會(huì)驗(yàn)證影響其它請(qǐng)求的執(zhí)行。同一個(gè)腳本生成的簽名都是相同的,所以簽名可以先在本地生成,然后在服務(wù)器上一次腳本,程序中只需保存和使用該簽名即可。同樣的腳本,是始終生成相同的簽名的。 Last-Modified: 2019年6月5日15:59:34 參考鏈接 PHP使用Redis+Lua腳本操作的注意事項(xiàng) 《Redis官方文檔》用Redi...

    Coly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<