国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

RiverLi / 3104人閱讀

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

導(dǎo)語

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

SETNX

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

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

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

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

返回值:

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

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

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

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

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

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


參考資料:SETNX。

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/30076.html

相關(guān)文章

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

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

    YanceyOfficial 評論0 收藏0
  • Redis分布式

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

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

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

    Coly 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<