缓存MEMCACHE 使用原子性操作add,实现并发锁
memcache中Memcache::add()方法在缓存服务器之前不存在 </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> __construct(){
</span><span style="color: #800080">$this</span>->mc = <span style="color: #0000ff">new</span> dlufMemcache('127.0.0.1',11211<span style="color: #000000">);
}
</span><span style="color: #008000">/*</span><span style="color: #008000">*
* 进行锁操作
* @param [type] $lock_id
* @param integer $expire
</span><span style="color: #008000">*/</span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> Lock(<span style="color: #800080">$lock_id</span>,<span style="color: #800080">$expire</span>=5<span style="color: #000000">){
</span><span style="color: #800080">$mkey</span> = self::KEY_PREFIX.<span style="color: #800080">$lock_id</span><span style="color: #000000">;
</span><span style="color: #0000ff">for</span>(<span style="color: #800080">$i</span> = 0; <span style="color: #800080">$i</span> < 10; <span style="color: #800080">$i</span>++<span style="color: #000000">){
</span><span style="color: #800080">$flag</span> = <span style="color: #0000ff">false</span><span style="color: #000000">;
</span><span style="color: #0000ff">try</span><span style="color: #000000">{
</span><span style="color: #800080">$flag</span> = <span style="color: #800080">$this</span>->mc->add(<span style="color: #800080">$mkey</span>,'1',<span style="color: #800080">$expire</span><span style="color: #000000">);
}</span><span style="color: #0000ff">catch</span>(<span style="color: #0000ff">Exception</span> <span style="color: #800080">$e</span><span style="color: #000000">){
</span><span style="color: #800080">$flag</span> = <span style="color: #0000ff">false</span><span style="color: #000000">;
</span><span style="color: #008000">//</span><span style="color: #008000">log</span>
<span style="color: #000000"> }
} 然后使用cacheLock进行并发热点代码控制 = = ->Lock('cachelock'(! "cachelock is lock" </span><span style="color: #008000">/*</span><span style="color: #008000"> 热点代码 写在这里
</span><span style="color: #008000">*/</span>
<span style="color: #800080">$lockobj</span>->unLock('cachelock'<span style="color: #000000">);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |