gpt4 book ai didi

database - 多组信息的redis架构

转载 作者:可可西里 更新时间:2023-11-01 11:45:25 25 4
gpt4 key购买 nike

设置:假设一个应用程序在 redis 中存储 3 种类型的数据:
1. session信息
2. 用户状态(在线/离线)
3.用户最喜欢的3种颜色

我想问一下设置它的正确架构。我应该:
一个。仅仅用不同的 key 存储所有东西?即:
a1) 存储每个 session :key = "session id", value = "session information",
a2) 存储每个状态:key = "user id", value = "online || offline",
/>a3) 存储每个喜欢的颜色:key = "user color1 || user color2 || user color3", value = "color name"

b.使用不同的键存储 session ,并使用状态/最喜欢的颜色集?即:
b1) 存储每个 session :key = "session id", value = "session information",
b2) 创建 2 组在线和离线:每个在线用户在“设置在线”中,每个离线用户在“设置离线”中
b3) 为每个用户创建一个“颜色集”:在每个集中,存储 3 种最喜欢的颜色。

C。使用不同的键存储 session ,并使用状态/最喜欢的颜色列表?
c1) 存储每个 session :key = "session id", value = "session information",
c2) 创建 2 个在线和离线列表:“在线列表”中的每个在线用户,“离线列表”中的每个离线用户
c3) 为每个用户创建一个“颜色列表”:在每个列表中,存储 3 种最喜欢的颜色。

其他选择?

我主要关心性能。我想对 session 、状态、颜色执行查询,以便尽可能高效(假设超过 500 万用户)。

最佳答案

我会为 session 做字符串。它们很简单,您可以将它们设置为过期 ( SETEX )。

至于颜色,你会为一组产生内存开销,所以我只将所有三种颜色存储为 1 个字符串值,用 JSON 序列化。或 MessagePack (例如 SET colors:<user_id> '["red", "blue", "green"]')。

对于用户状态,这意味着如果一个用户不在线,他们就处于离线状态,所以我会花时间和空间保留两套,只存储哪些用户在线。根据我的经验,redis 的速度足以将其作为一个集合来处理,但另一种选择是使用 redis bitmaps来处理这些数据。请参阅博文 Chandra Patni了解详情。

关于database - 多组信息的redis架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com