redis 安装
wget http://download.redis.io/redis-stable.tar.gz tar zxvf redis-stable.tar.gz cd redis-stable.tar.gz make make install 无权限机器,可以采用rpm或者apt-get或者等等别 的工具装。
redis php扩展安装
可以采用phpize方法编译扩展tar xzvf phpredis-2.2.7.tar.gzcd ./phpredis-2.2.7/yourPhpBin/phpize./configure --with-php-config=/home/work/odp2/php/bin/php-configmakemake install扩展放入extension目录,并修改php.ini 可能会遇到float point exception的情况,系扩展由高版本gcc编译,当前环境是低版本gcc构建的,因此会出现该问题。
redis 实现加锁
项目中使用redis 做缓存,做流量控制等
下面简单的介绍下用redis 来控制访问,简单的讲就是锁机制
使用到的函数可能有setNx,expire,set,multi,exec等
$lockKey = $account."_lock";$lockValue = rand(1,500);$lockTime = 100;$retTrans = $redisC->multi() ->setNx($lockKey,$lockValue) ->expire($lockKey,$lockTime) ->exec(); //取setNx的结果$lockRet = $retTrans[0];//several process ,concurrence//get account_lock and call the bduss interfaceif ($lockRet){ //获得锁,执行操作
update();
//去锁 //判断是否是先前 加的锁(即同一进程加的锁),排除因为锁失效(时间过期)导致别的进程访问接口进而删除该进程的同名锁 $tmp = $redisC->get($lockKey); if ($tmp == $lockValue){ //var_dump("去除锁"); $redisC->del($lockKey); }
}
时间: 2024-10-14 15:02:55