美文网首页
使用redis对接口进行加锁

使用redis对接口进行加锁

作者: 独孤游侠 | 来源:发表于2019-04-12 12:01 被阅读0次
<?php
class myRedis
{
    public static $singleInstance; // 保存对象
    public static $_redis; // 保存对象
    private function __construct(){
        // 私有构造函数,禁止外部实例化
    }

    private function __clone(){
        // TODO: Implement __clone() method.
    }

    /**
     * 唯一方法获取对象实例
     * @return myRedis
     */
    public static function getInstance()
    {
        if (!self::$singleInstance) {
            self::$singleInstance = new self();
        }
        return self::$singleInstance;
    }

    /**
     *获取redis对象
     * @return Redis
     */
    public static function getRedis(){
        if (!self::$_redis) {
            self::$_redis = new Redis();
            self::$_redis->connect(REDIS_HOST, REDIS_PORT); // host和port参数可以自己配置,获取方式自定
        }
        return self::$_redis;
    }

    /**
     * 添加有生命周期的锁
     * @param string $key
     * @param string $value
     * @param int $expire
     * @return bool
     */
    public function addLock($key = '', $value = '', $expire = 60){
        $_redis = self::getRedis();
        return $_redis->set($key, $value, $expire);
    }

    /**
     * 获取锁
     * @param $key
     * @return bool|string
     */
    public function getLock($key){
        return self::getRedis()->get($key);
    }

    /**
     * 剩余生命周期
     * @param $key
     * @return int
     */
    public function remainLockExpire($key){
        return self::getRedis()->ttl($key);
    }

    /**
     * 释放锁
     * @param  String  $key 锁标识
     * @return Boolean
     */
    public function unlock($key){
        return self::getRedis()->del($key);
    }
}

相关文章

网友评论

      本文标题:使用redis对接口进行加锁

      本文链接:https://www.haomeiwen.com/subject/qfwqwqtx.html