您的位置:首页 > 数据库 > Redis

Redis 并发加锁

2016-04-07 15:37 525 查看
并发加锁

如果不是redis 集群,可以用multi

如果是集群就不行了,因为访问的redis是随机的

function lock($id,$expire){
$id = "lock_".$id;
$now = time();
$expireTime = $now + $expire;
$redis = Factory::getRedis();
$reult = $redis->setnx($id,$expireTime);
if($result){//获得锁
return true;
}
//防止死锁判断过期
$value = $redis->get($id);
//锁过期
if($value <= $now){
//竞争获取锁
$value = $redis->getSet($id,$expireTime);
if($value <= $now){
return true;
}
}
return false;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: