工作间隙写了个redis防并发的锁示例,以备以后参考,前面写过利用文件锁防并发的代码,但考虑到效率以及分布式系统,文件锁会有弊端,而这种情况下redis则没有问题。
<?php
$redis=new Redis;
$redis->connect('127.0.0.1',6379);
$userid='23';
$articleid='126';
//开始加锁
$key=md5($userid.$articleid);
//设置不可重复
$result=$redis->setnx($key,'1',5);
if(!$result){
echo '您访问太频繁了,请稍后访问!';
$redis->delete($key);
exit;
}
/*
* 正常业务逻辑
*/
$redis->delete($key);