我应该如何将 user 和 user_sessions 作为 HKEY 存储在 Redis 中?

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

我有用户表,其中保存密码、角色、个人资料 ID 等。我还有 tableele User_sessions,其中保存 user_id、session_id、到期日期、user_role 和一些其他数据。

问题是我想将所有数据存储在 Redis 中而不分配太多内存。考虑到有 200 万用户和 500 万个未过期会话,是否有办法将数据存储在 4-8GB RAM Redis 中。

在第一个场景中,我将在 postgress 中存储用户表,同时在 Redis 中存储会话数据。会话密钥将是随机 UID 或任何其他 16-64 字节的字符串

问题1:使用默认的redist配置将会话存储为HKEY是一个好的解决方案吗?我怀疑Hashkey对于重复Key有其限制。有什么推荐的策略吗?

问题 2:我是否也应该将 User 表存储在 Redis 中?

问题3:考虑到每次调用都会查询小于1000的数据,在Redis或Postgress(无连接)中查询数据是否合适?即在每个请求中都会调用权限表来检查该调用的角色权限。

现在我使用 posgress 来查询权限,想知道是否值得切换到 Redis。

session redis hash hashset
1个回答
0
投票

一般答案:解决方案很容易被过度思考。从简单、强大的解决方案开始,仅当您看到有明确的改进案例时才进行调整。

答案 1:根据您的用户模式,这可能是一个很好的解决方案。关于密钥的唯一性,您可能可以只使用

session_id
。根据您生成
session_id
的方式,您可以使用
user_id:session_id
使其更加独特。

答案 2:如果您决定将

user_session
存储在 Redis 中,并且同时还需要
user
,那么您可能应该将两个表都存储在 Redis 中。否则不行。

答案 3:如果您只有 1000 条记录,则可能根本不需要缓存,除非您希望尽可能降低延迟。这完全取决于您的用户模式。

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