基於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 } 複製程式碼
- A判斷
-
- B判斷
if($redis->sIsmember('b_set',$user_id)){ //true }else{ //false } 複製程式碼
- B判斷
用到的方法
- sadd key_set value 設定值到set中
- sismember key_set value 判斷值時候存在key_set裡面
- srem key_set value 移除指定值
- smembers key_set 獲取所有的value