Redis 中的会话数据 - 键/值还是哈希类型?

问题描述 投票:0回答:2

我们正在将会话存储从应用程序服务器转移到 Redis。 session值大约是2k(我知道这个值很大,以后会大幅缩小)。 我们将在那里存储大约 1000 万个会话。

问题是我们应该将每一个存储为键/值还是将它们全部保存在一个哈希对象中?两者之间有什么好处吗?

redis
2个回答
2
投票

从我的角度来看,键/值和哈希之间最大的区别在于使用 TTL。

因此,您可以在键/值或整个哈希上使用

TTL
,而不是针对某个特定哈希字段。 您不能将
TTL
用于
HASH
儿童归档

要考虑的另一件事是手册页,它说哈希类型适合表示对象。但您也可以使用它们。

您可以使用哈希作为每个用户会话对象,如果您需要设置

TTL
,请通过
EXPIRE
命令将其设置为哈希键。

我认为你不需要在这两种类型之间进行选择,你可以将它们结合起来!期望将 json 字符串保存到键/值对中。

例如,我是这样设置用户123会话数据的,该数据将在5分钟(300秒)后过期:

redis> HSET SESSION:123 firstname "Ali" lastname "Malek" credentials "P@sSw0rd"
1
redis> EXPIRE SESSION:123 300
1
redis> HGET SESSION:123 username
"Ali"

您可以用

SESSION:123
 更改 
SESSION:{session_id}


0
投票

我并没有真正理解“一个哈希对象”部分。使用哈希值,问题是您无法取回数据。

只需jsonify你的session对象,并将其存储为key / val,key是存储在客户端cookie中的session_id。

© www.soinside.com 2019 - 2024. All rights reserved.