Redis Lock

984 ワード

ここでのロックは、プロセスロックではなく、ファイルロックではなく、Redisによるロック形式であり、ユーザが操作している状態をロックする.しかしながら,真の意味での原子ロックではなく,Redisのメモリにおける高速読み書きを利用して実現するメカニズムであるため,一定の読み書き速度を突破すると,このメカニズムは失効するという制限がある.したがって、厳密なパフォーマンス要件では、使用は推奨されません.
次に、Laravelゲートに基づくコードを示します.
    /**
     *  Redis   
     *
     *  @param  string $key         
     *  @param  int    $expire       
     *  @return bool 
     */
    public function lockKey($key, $expire)
    {
        $lockStatus = Redis::get($key);
        if($lockStatus == 1){
            return false;  //   $key       
        }else{
            Redis::setex($key, $expire, 1);  //   key         $expire  ,    1  ,   
            return true;
        }
    }

    /**
     *  Redis   
     *
     *  @param string $key      
     */
    public function unlockKey($key)
    {
        if(Redis::exists($key))
            Redis::del($key);
    }

独立性やトランザクションが必要なコードモジュール、インタフェースでは、Redisを簡単に利用してロックを追加する必要があります.
 
本文を転載して、出典、作者を明記してください.