以下是我在工作中用到的類,redis加鎖兩種方式,解鎖為了保證原子性所以只用lua+redis的方式
缺陷:雖然死鎖問題解決了,但業務執行時間超過鎖有效期還是存在多客戶端加鎖問題。
不過,這個類已經滿足了我現在的業務需求
更優的解決方案可以參考以下兩篇文章:
(redlock的演算法描述)
**實現:
class
redislock
}public
function
lock
($key, $expire = 5)
// 獲取上乙個鎖的到期時間
$currentlocktime = $this->_redis->get($key);
if ($currentlocktime
< $now)
}return
false;
}public
function
lockbylua
($key, $expire = 5)
public
function
unlock
($key)
}private
function
_eval
($script, array $params, $keynum = 1)
}$redislock = new redislock();
$key = 'lock';
if ($redislock->lockbylua($key))
zabbix proxy 實現分布監控
在日常運維工作中,難免會遇到這樣或那樣的故障,如何能在第一時間發現故障,並及時定位故障原因,保證業務不受影響,我想這應該是做好乙個運維必須要掌握的技能。但人力不可能實時掌控系統的變化,於是監控系統應運而生,監控便是運維的眼睛,把監控和效能管理做好後,運維就是一件很輕鬆的事情。目前比較流行的開源監控工...
thinkPHP實現MemCache分布式快取功能
兩天在研究memcache分布式快取的問題時,發現thinkphp其實並不支援分布式快取功能,這可以從官方提供的cachememcache.class.php檔案中看到 if empty options func options persistent pconnect connect this ex...
Matlab實現正態分佈
1 使用matlab畫出正態分佈的概率密度函式影象。x 10 0.01 10 y normpdf x,0,1 正態分佈函式。figure axes1 axes pos 0.1 0.1 0.85 0.85 plot x,y set axes1,ylim 0.01 0.43 xlim 3 3 圖1 2 ...