2014-02-07 103 views
0

我使用redis來存儲用戶會話,通過我登錄時生成的guid來存儲用戶會話。我將它用作會話對象中的鍵。Redis - 通過多個鍵進行查詢

如果我要鎖定用戶的帳戶,我現在必須通過所有會話並檢查它們是否是用戶的,然後刪除它們。

有沒有辦法也可以通過用戶ID查詢?我是否應該使用僅由標準密鑰值保險的有序集?

回答

2

通過所有的鑰匙可能不是最好的主意。你可以做的是將每個用戶會話的指導存儲在另一個關鍵字中 - 集合數據類型似乎是最佳選擇 - 並且在用戶打開/關閉會話時添加/刪除它。因此,當用戶打開一個新的會話你會:

SET session:<guid> <session_object> 
SADD user_sessions:<user_id> <session_guid> 

當會話關閉時,你會做:

DEL session:<guid> 
SREM user_sessions:<user_id> <session_guid> 

要找到哪個會話GUID是用戶的,例如對於帳戶鎖定,請執行以下操作:

SMEMBERS sessions:<user_id> 
+0

謝謝,這非常接近我最終實現的目標 – Neil