<?php $redis = new Redis(); $host = 'localhost'; $port = 6379; $redis->connect($host,$port); //redis 是單線程 if($redis->exists('lockFlag')){ return json_encode(array('status'=>false,'msg'=>'請稍後重試')); }else{ try{ //加鎖 $redis->set('lockFlag','isLocked',10); //獲取庫存數 $stock = $redis->get('stock'); if($stock > 0) { $redis->decrBy('stock',1); //執行相應邏輯,儘量簡單 }else{ //優化:庫存不足情況下,直接提示相應信息,不用操作redis了,在外面另外加判斷 return json_encode(array('status'=>false,'msg'=>'庫存不足')); } } finally { $redis->del('lockFlag'); } } ?>
使用php和redis實現簡單的分佈式鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.