2014-02-07 1 views
0

Я использую redis для хранения пользовательских сессий директором i, созданным при входе в систему. Я использую это как ключ в своем объекте сеанса.Redis - запрос более чем на ключ

Если я должен был заблокировать учетную запись пользователя, я в настоящее время должен пройти все сессии и проверить, являются ли они пользователем, а затем удалять их.

Есть ли способ запросить идентификатор пользователя? Должен ли я использовать отсортированный набор, застрахованный от стандартного значения ключа?

ответ

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