以前對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...