我应该如何使用Redis为用户存储多个会话?

时间:2016-08-19 04:46:35

标签: redis

假设用户可以拥有多个会话(JWT令牌)。是否最好存储一个 hashet 的令牌,其中键是userId?

E.g key: 1 -> hashet: "token1", "token2", "token3", "token4", "moretokens..."

然后检查令牌是否有效我会得到散列集,循环遍历它并尝试匹配令牌?

使用hashet意味着我能够向用户显示当前的会话。

2 个答案:

答案 0 :(得分:0)

您可以使用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

答案 1 :(得分:0)

哈希将是存储值的最有效方式,因为您可以在用户ID下存储所有用户令牌,并使用HGET直接检查它们,而无需全部检索它们并循环遍历它们。