码迷,mamicode.com
首页 > Web开发 > 详细

php实习redis锁机制

时间:2016-03-21 20:11:53      阅读:631      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!