首页 > Web开发 > 详细

php实习redis锁机制

时间:2016-03-21 20:09:56      阅读:149      评论:0      收藏:0      [点我收藏+]
<?php

class Redis_lock
{

    public static function getRedis()
    {
        $redis = new redis();
        $redis->connect(‘182.254.208.72‘, 3838, 0);
        $redis->auth(‘eh.123‘);
        return $redis;
    }

    public static function lock($key, $expire = 60)
    {
        if(!$key) {
            return false;
        }
        $redis = self::getRedis();
        do {
            if($acquired = ($redis->setnx("Lock:{$key}", time()))) { // 如果redis不存在,则成功
                $redis->expire($key, $expire);
                break;
            }

            usleep($expire);

        } while (true);

        return true;
    }

    //释放锁
    public static function release($key)
    {
        if(!$key) {
            return false;
        }
        $redis = self::getRedis();
        $redis->del("Lock:{$key}");
        $redis->close();
    }


}


$redis = Redis_lock::getRedis();
Redis_lock::lock(‘lock‘);
$re = $redis->get(‘Sentiger‘);
$re--;
$redis->set(‘Sentiger‘, $re);
Redis_lock::release(‘lock‘);



?>

测试可以 用ab测试工具测试

php实习redis锁机制

原文:http://www.cnblogs.com/shiwenhu/p/5303008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!