Redis無秩序集合に基づくマルチエンドログイン禁止

931 ワード

Redis無秩序集合に基づくマルチエンドログイン禁止
適用背景
複数のアプリケーション側は名前をAとBと仮定し,ユーザがA Bから同時にログインすることを禁止し,Aログイン蹴B,Bログイン蹴A
実現構想.
  • 無秩序な2つのセットa_を設定するset, b_set
  • a bログイン時に
  • を実行する.
    $redis->sAdd('a_set',$user_id);//A  
    $redis->sRem('b_set',$user_id);// B
    $redis->sAdd('b_set',$user_id);//B  
    $redis->sRem('a_set',$user_id);// A
  • apiデータを取得する前に、そのエンドのidがオンラインであるか否か(ABの両方のエンドのapiが別々である)
  • を判断する.
  • A判断
  • if($redis->sIsmember('a_set',$user_id)){
       //true 
    }else{
        //false
    }
  • B判定
  • if($redis->sIsmember('b_set',$user_id)){
        //true
    }else{
        //false
    }

    使用方法
  • sadd key_set value設定値set
  • sismember key_set value判定値が存在する場合key_set奥
  • srem key_set value指定値
  • を除去する
  • smembers key_setすべてのvalue
  • を取得