标签:
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.gz
cd ./phpredis-2.2.7
/yourPhpBin/phpize
./configure --with-php-config=/home/work/odp2/php/bin/php-config
make
make 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 interface
if ($lockRet){
//获得锁,执行操作
update();
//去锁
//判断是否是先前 加的锁(即同一进程加的锁),排除因为锁失效(时间过期)导致别的进程访问接口进而删除该进程的同名锁
$tmp = $redisC->get($lockKey);
if ($tmp == $lockValue){
//var_dump("去除锁");
$redisC->del($lockKey);
}
}
标签:
原文地址:http://www.cnblogs.com/OldJade/p/5132144.html