共計(jì) 774 個(gè)字符,預(yù)計(jì)需要花費(fèi) 2 分鐘才能閱讀完成。
自動(dòng)寫(xiě)代碼機(jī)器人,免費(fèi)開(kāi)通
這篇文章給大家分享的是有關(guān)基于 Redis 無(wú)序集合實(shí)現(xiàn)禁止多端登錄功能的方法的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
前言
一個(gè)集合類(lèi)型可以存儲(chǔ)最多 2^32 -1 個(gè)字符串
集合類(lèi)型在 redis 內(nèi)部使用值為空的散列表(hash table)實(shí)現(xiàn),所以集合中的加入或刪除元素等時(shí)間復(fù)雜度為 O(1)。
集合具有元素唯一性。
應(yīng)用背景
多個(gè)應(yīng)用端假設(shè)名稱(chēng)叫做 A 和 B,禁止用戶從 A B 同時(shí)登錄,A 登錄踢 B,B 登錄踢 A
實(shí)現(xiàn)思路
設(shè)置兩個(gè)無(wú)序集合 a_set, b_set
a b 登錄的時(shí)候執(zhí)行
$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 獲取數(shù)據(jù)之前判斷該端的 id 是否在線 (AB 兩個(gè)端的 api 是分開(kāi)的)
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 設(shè)置值到 set 中
sismember key_set value 判斷值時(shí)候存在 key_set 里面
srem key_set value 移除指定值
smembers key_set 獲取所有的 value
感謝各位的閱讀!關(guān)于“基于 Redis 無(wú)序集合實(shí)現(xiàn)禁止多端登錄功能的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
向 AI 問(wèn)一下細(xì)節(jié)