基於Redis無序集合實現禁止多端登入

藍田暖玉發表於2018-11-30

基於Redis無序集合實現禁止多端登入

應用背景

多個應用端假設名稱叫做A和B,禁止使用者從A B同時登入,A登入踢B,B登入踢A

實現思路

  • 設定兩個無序集合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
      }
      複製程式碼

用到的方法

  1. sadd key_set value 設定值到set中
  2. sismember key_set value 判斷值時候存在key_set裡面
  3. srem key_set value 移除指定值
  4. smembers key_set 獲取所有的value

相關文章