如何用分散式鎖解決陪玩平臺原始碼中的併發問題?
用redis 的 setnx、expire 方法做分散式鎖
用 redis 的 setnx()、get()、getset()方法做分散式鎖
/** * 獲取Redis分散式鎖 * * @param $lockKey * @return bool */function getRedisDistributedLock(string $lockKey) : bool{ $lockTimeout = 2000;// 鎖的超時時間2000毫秒 $now = intval(microtime(true) * 1000); $lockExpireTime = $now + $lockTimeout; $lockResult = Redis::setnx($lockKey, $lockExpireTime); if ($lockResult) { // 當前程式設定鎖成功 return true; } else { $oldLockExpireTime = Redis::get($lockKey); if ($now > $oldLockExpireTime && $oldLockExpireTime == Redis::getset($lockKey, $lockExpireTime)) { return true; } } return false;}/** * 序列執行程式 * * @param string $lockKey Key for lock * @param Closure $closure 獲得鎖後程式要執行的閉包 * @return mixed */function serialProcessing(string $lockKey, Closure $closure){ if (getRedisDistributedLock($lockKey)) { $result = $closure(); $now = intval(microtime(true) * 1000); if ($now < Redis::get($lockKey)) { Redis::del($lockKey); } } else { // 延遲200毫秒再執行 usleep(200 * 1000); return serialProcessing($lockKey, $closure); } return $result;}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2794801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用 Go + Redis 實現陪玩平臺原始碼中的分散式鎖GoRedis原始碼分散式
- 用分散式鎖解決併發問題分散式
- Spring Boot + Redis 解決陪玩平臺原始碼重複提交問題Spring BootRedis原始碼
- 遊戲陪玩原始碼的輪詢鎖,使用時遇到的問題與解決方案遊戲原始碼
- 陪玩平臺原始碼中的CDN服務不可用時的解決辦法原始碼
- 使用redis分散式鎖解決併發執行緒資源共享問題Redis分散式執行緒
- ZooKeeper 分散式鎖 Curator 原始碼 03:可重入鎖併發加鎖分散式原始碼
- 分散式鎖解決併發的三種實現方式分散式
- redis分散式鎖的問題和解決Redis分散式
- 陪玩平臺原始碼中的排序演算法,插入排序的實現原始碼排序演算法
- 遊戲陪玩平臺原始碼,日期格式化的程式碼分析遊戲原始碼
- 遊戲陪玩平臺原始碼開發,依賴收集和觸發的實現遊戲原始碼
- 分散式系統設計中的併發訪問解決方案分散式
- 如何利用限流解決遊戲陪玩app開發中的重複提交問題?遊戲APP
- redis實現分散式鎖---實操---問題解決Redis分散式
- 基於Mongodb分散式鎖簡單實現,解決定時任務併發執行問題MongoDB分散式
- 面試題詳解:如何用Redis實現分散式鎖?面試題Redis分散式
- 分散式鎖的解決方案分散式
- 【Redisson】分散式鎖的原始碼解析Redis分散式原始碼
- 提升陪玩平臺原始碼的整體效能,MySQL資料庫如何優化?原始碼MySql資料庫優化
- 【Java併發】【AQS鎖】鎖在原始碼中的應用JavaAQS原始碼
- 分散式系統設計中的併發訪問解決方案 | 得物技術分散式
- 「分散式技術專題」併發系列一:基於加鎖的併發控制分散式
- 圖解Janusgraph系列-併發安全:鎖機制(本地鎖+分散式鎖)分析圖解分散式
- 遊戲陪玩平臺原始碼開發,聊天室內的禮物連擊效果的實現遊戲原始碼
- 在專案中如何用Redis分散式鎖Redis分散式
- PHP利用Redis鎖解決併發訪問PHPRedis
- Redis 分散式鎖解決方案Redis分散式
- Redis分散式鎖解決方案Redis分散式
- 高併發架構系列:分散式鎖的由來、特點及Redis分散式鎖的實現詳解架構分散式Redis
- 前端陪玩平臺原始碼管理是否得當,可以從哪些方面考證?前端原始碼
- 低程式碼平臺可以解決軟體開發的所有問題嗎
- Redisson 分散式鎖原始碼 09:RedLock 紅鎖的故事Redis分散式原始碼
- [分散式]高併發案例---庫存超發問題分散式
- 靈活運用分散式鎖解決資料重複插入問題分散式
- 直播平臺原始碼,關於彈出框中輸入框被遮擋問題解決原始碼
- 基於Redisson實現分散式鎖原始碼解讀Redis分散式原始碼
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式