将用户信息存储在Redis或MongoDB中

2024-04-20 11:53:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在类似json的对象中存储一些用户和文档状态信息。例如:

{
    "name": "Henry",
    "company": "Disney",
    "is_recommended": true,
    "plan_type" "free",
    etc.
}

当用户登录或更改任何用户信息时,这些信息从数据库中提取并存储在会话的内存中。你知道吗

我对redis有一些经验,我觉得自己用起来很舒服,但我想知道,在redis中是否可以做到这一点,而不必经历太多的麻烦。例如,以下是我需要运行的一些查询:

update items set plan_type="Paid" where company = "Disney";

您认为在redis中实现上述功能是可行的,还是应该尝试使用其他工具(我的想法是mongodb)来实现上述功能?你知道吗

99%的使用率是读取数据,而1%的使用率是以批量方式更新数据,而且需要即时完成。你知道吗

六年前也有人问过类似的问题——What's the most efficient document-oriented database engine to store thousands of medium sized documents?——但我敢肯定,从那时起,redis和mongodb都发生了很大的变化。。。你知道吗


Tags: 对象用户name文档功能redis信息json
1条回答
网友
1楼 · 发布于 2024-04-20 11:53:42

您可以使用SETLIST公司字段构建二级索引:

SADD company:Disney userid1
SADD company:Disney userid2
SADD company:OtherCompany userid3

需要更新数据时,请执行以下步骤:

  1. 搜索公司索引以获取用户ID:SMEMBERS company:Disney
  2. 搜索用户索引以获得用户属性:对于每个用户do:GET userid
  3. 更新属性
  4. 更新用户索引:为每个用户做:SET userid new-attributes

这是实现目标的内在方式,它需要更多的工作,而且有点复杂。你知道吗

然而,正如评论中提到的@Not\u a\u Golfer,Redis有一个名为RediSearch的模块来为您完成这项工作。如果您正在使用Redis 4.0或更高版本,您可以试试。你知道吗

相关问题 更多 >