redis用戶登錄 jwt如何防止多端登錄?
jwt如何防止多端登錄?阻止多終端登錄?為什么我們要通過JWT??JWT只存儲用戶的基本信息。JWT的目的是減少數(shù)據(jù)庫搜索并提高響應時間。如果要阻止多終端登錄,只需檢查JWT是否成功,然后執(zhí)行redi
jwt如何防止多端登錄?
阻止多終端登錄?為什么我們要通過JWT??
JWT只存儲用戶的基本信息。JWT的目的是減少數(shù)據(jù)庫搜索并提高響應時間。
如果要阻止多終端登錄,只需檢查JWT是否成功,然后執(zhí)行redis檢查。
Redis群集。效率很高。Redis有一個稱為bitmap的數(shù)據(jù)結構。命令是setbit key offset 1,這意味著將對應于鍵的二進制向量的偏移位設置為1。
例如,鍵對應的二進制是:000000,偏移對應的位置是第二個設置為1。是010000。
密鑰表示唯一密鑰,偏移量表示用戶ID。如果登錄成功,相應位置將設置為1,注銷將設置為0。當設置為1時,此命令只能成功一次
setbit islogin ID001 1 user 1 login成功
setbit islogin ID001 0 user 1 logoff
setbit islogin ID002 1 user 2 login成功
setbit islogin ID002 0 user 2脫機
即使使用了Sentry,redis的每個實例都是滿存儲,而且每個redis中存儲的內容都是完整的數(shù)據(jù),浪費內存,具有桶效應。為了最大限度地利用內存,我們可以使用集群,即分布式存儲。也就是說,每個redis存儲不同的內容,總共有16384個插槽。每個redis得到一些Slot,hash_uslot=CRC16(key)mod 16384找到對應的Slot,key是available key,如果有{},則取{}作為available key,否則整個key是available key,集群至少需要3個master和3個slave,每個實例使用不同的配置文件,master和slave不需要要進行配置,集群將自行選擇。因此,這仍然是必要的,因為redis集群將內容存儲到每個節(jié)點,Sentinel的角色是監(jiān)視redis主、從數(shù)據(jù)庫是否正常運行。如果主數(shù)據(jù)庫出現(xiàn)故障,它會自動將從數(shù)據(jù)庫轉換為主數(shù)據(jù)庫。