日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Redis鎖與Lua腳本實(shí)現(xiàn)原子性(redis鎖和lua)

操作

Redis鎖是一種基于Redis服務(wù)器的分布式鎖機(jī)制,通過(guò)特定的鍵值對(duì)結(jié)構(gòu)實(shí)現(xiàn)同步狀態(tài)的共享,在大型分布式環(huán)境中,可以使用Redis鎖來(lái)保證原子性的操作。

Redis鎖的機(jī)制可以通過(guò)鍵值對(duì)的存儲(chǔ)方式來(lái)實(shí)現(xiàn),Redis鎖最常見(jiàn)的實(shí)現(xiàn)方式就是SETNX命令,該命令可以只設(shè)置鍵不存在時(shí)值才能被設(shè)置,在Redis Lock實(shí)現(xiàn)中,需要先設(shè)置指定的key value,然后再使用該key進(jìn)行釋放動(dòng)作來(lái)實(shí)現(xiàn)原子性操作。例如下面的代碼:

set locks test NEX 30
If success
//execute atomic operations
else
// acquire lock fl

在持續(xù)的程序運(yùn)行過(guò)程中,Redis鎖機(jī)制也可能會(huì)出現(xiàn)鎖超時(shí)的情況,此時(shí)可以使用Lua腳本實(shí)現(xiàn)原子性操作。Lua腳本可以在Redis服務(wù)器端執(zhí)行一條腳本,所有在腳本范圍內(nèi)的命令都將被一次性執(zhí)行,此外,它還保證了腳本中可靠性操作的原子性,確保操作在腳本執(zhí)行期間不會(huì)被其它進(jìn)程執(zhí)行。

例如可以使用下面的Lua腳本實(shí)現(xiàn)Redis鎖,將設(shè)置鎖和釋放鎖兩個(gè)操作放到同一個(gè)腳本中執(zhí)行:

local lockKey = KEYS[1]
local acquireLock = function(uid, resources)
if Redis.pcall("setnx", lockKey, uid) then
Redis.pcall("expire", lockKey, 30)
return true
else
if Redis.pcall("get", lockKey) == uid then
Redis.pcall("expire", lockKey, 30)
return true
end
end
return false
end

local releaseLock = function (uid, resources)
if Redis.pcall("get", lockKey) == uid then
Redis.pcall("del", lockKey)
end
return true
end```

該腳本的執(zhí)行需要兩個(gè)參數(shù),一個(gè)是資源標(biāo)識(shí),另一個(gè)資源句柄。在首次執(zhí)行時(shí),腳本會(huì)調(diào)用acquireLock方法設(shè)置鎖,并設(shè)置超時(shí)30秒;之后會(huì)調(diào)用releaseLock方法釋放鎖,從而保證在腳本執(zhí)行期間,可以實(shí)現(xiàn)原子性操作。

Redis鎖與Lua腳本實(shí)現(xiàn)原子性操作是一種常用的分布式鎖機(jī)制。在Redis鎖實(shí)現(xiàn)原子性操作時(shí),可以通過(guò)設(shè)置和釋放鎖來(lái)實(shí)現(xiàn);或者直接通過(guò)Lua腳本,將設(shè)置鎖和釋放鎖實(shí)現(xiàn)在腳本中,從而在腳本執(zhí)行期間保證原子性的操作。

成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽(yáng)、重慶、貴陽(yáng)機(jī)房服務(wù)器托管租用。


分享題目:Redis鎖與Lua腳本實(shí)現(xiàn)原子性(redis鎖和lua)
標(biāo)題來(lái)源:http://www.dlmjj.cn/article/dppispo.html