1. 程式人生 > 資料庫 >基於Redis無序集合如何實現禁止多端登入功能

基於Redis無序集合如何實現禁止多端登入功能

前言

一個集合型別可以儲存最多2^32 -1 個字串

集合型別在redis內部使用值為空的散列表(hash table)實現,所以集合中的加入或刪除元素等時間複雜度為O(1)。

集合具有元素唯一性。

本文主要給大家介紹了基於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是分開的)

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。