基於Redis無序集合如何實現禁止多端登入功能
阿新 • • 發佈:2020-01-09
前言
一個集合型別可以儲存最多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
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。