redis实现mysql锁的方法

redis实现mysql锁的方法


        $config = array(
            'host'           => 'localhost',
            'port'           => 6379,
            'index'          => 0,
            'auth'           => '3213',
            'timeout'        => 1,
            'reserved'       => null,
            'retry_interval' => 100,
        );

        $redislock = new \redislock($config);

        $key = 'fwefwe';
        while (1) {
        
            $is_lock = $redislock->lock($key, 2);

            //如果已经抢占锁了 可以继续往下执行
            if ($is_lock) {
                break;
            }
            usleep(500000);

        }

        $data = array('info1' => '啦2啦', 'info2' => '啦啦啦22啦啦啦');
        $isok = $this->commoninsertinfo($data, 'mobantestinfo1');
        $redislock->unlock($key);
        echo '执行成功';
        exit();

  不用担心mysql出现死锁 缓存穿透也可以采取这个方案 只保证1个执行

posted @ 2020-10-08 10:19  newmiracle宇宙  阅读(309)  评论(0编辑  收藏  举报