redis鎖的實際應用

2021-10-05 15:29:38 字數 1272 閱讀 5267

以前對redis上鎖概念一直不太清楚,現在來整理下

其實就是當你的一次操作要保證資料的原子性和一致性,你需要先加個鎖(這個加鎖的動作其實也包含了驗證是否上鎖),然後進行操作,完了即使沒有成功也要解鎖,這個redis的操作為什麼要用lua語句因為要保證原子操作

解鎖的原則:在乙個使用者下

如下示例:

$lockkey

=__function__

.$studentid

;$lockvalue

= cacheutil:

:redislock

($lockkey);

if($lockvalue

===false

)try

catch

(exception$e)

throw good***ception:

:error

(20300001);

}

以上set引數詳解見我另一篇傳送門

public

static

function

redislock

(string $key

,$time=5

) value: ")

;return

$value;}

else

value: ")

;return

false;}

}catch

(\redi***ception$e)

exception:"

.json_encode($e

));return

false;}

}

public

static

function

redisunlock

(string $key

, int $value

) value: ")

;return

true;}

else

value: ")

;return

false;}

}catch

(\redi***ception$e)

value:

exception:"

.json_encode($e

));return

false;}

}

redis限流的實際應用

首先讓我們先看一看系統架構設計中,為什麼要做 限流 旅遊景點通常都會有最大的接待量,不可能無限制的放遊客進入,比如故宮每天只賣八萬張票,超過八萬的遊客,無法買票進入,因為如果超過八萬人,景點的工作人員可能就忙不過來,過於擁擠的景點也會影響遊客的體驗和心情,並且還會有安全隱患 只賣n張票,這就是一種限...

Redis鎖的簡單應用

蝸牛redis系列文章目錄 redis cluster 其實說多執行緒修改資料也不合適,畢竟redis服務端是單執行緒的,所有命令序列執行,只是在客戶端併發傳送命令的時候,導致序列的命令一些排列問題和網路時間差等造成資料不一致。本文雖然是數字的加減,但是為了說明鎖的情況,故意不是用原子命令incr。...

redis10 Setbit 的實際應用

setbit 的實際應用 場景 1億個使用者,每個使用者 登陸 做任意操作 記為 今天活躍,否則記為不活躍 每週評出 有獎活躍使用者 連續7天活動,每月評,等等。思路 userid dt active 12013 07 2711 2013 0726 1如果是放在表中,1 表急劇增大,2 要用grou...