假设用户可以有多个会话(JWT令牌)。最好是存储一个hashet的关键是userId的标记?如何使用Redis将多个会话存储到用户?
E.g key: 1 -> hashet: "token1", "token2", "token3", "token4", "moretokens..."
为了再检查,如果令牌是有效的我能得到的HashSet,环通,并尝试匹配令牌?
使用hashet意味着我能够向用户显示当前会话。
假设用户可以有多个会话(JWT令牌)。最好是存储一个hashet的关键是userId的标记?如何使用Redis将多个会话存储到用户?
E.g key: 1 -> hashet: "token1", "token2", "token3", "token4", "moretokens..."
为了再检查,如果令牌是有效的我能得到的HashSet,环通,并尝试匹配令牌?
使用hashet意味着我能够向用户显示当前会话。
您可以使用SET
来存储令牌:将用户ID作为密钥,并将令牌列表存储到包含唯一元素的SET
(作为值)。
// insert single token
sadd userId token1
// insert multiple tokens
sadd userId token2 token3
// insert an existing token will fail
sadd userId token1
// check if a token is valid
sismember userId token1
// get all tokens of a user
smembers userId
哈希值将存储值的最有效的方式,你可以全部用户令牌的存储下用户ID,并检查他们直接使用HGET,而不需要通过检索所有这些,环他们。
此解决方案不考虑会话生存期。如何处理redis集中的多会话生命周期? – Joshua