小编典典

使用Redis或mongodb存储用户信息

redis

我需要在类似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%的使用量将以批量方式更新数据,并且需要立即完成。

六年前提出了类似的问题-什么是存储数千个中型文档的最有效的面向文档的数据库引擎?-但是我敢肯定,自那时以来,redis和mongodb都发生了很大变化。


阅读 625

收藏
2020-06-20

共1个答案

小编典典

您可以使用或来为 公司 字段构建二级索引:SET``LIST

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

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

  1. 搜索公司索引以获取用户ID: SMEMBERS company:Disney
  2. 搜索用户索引以获取用户属性:对于每个用户,请执行以下操作: GET userid
  3. 更新属性
  4. 更新用户索引:对每个用户执行以下操作: SET userid new-attributes

这是实现目标的内置方法,需要更多的工作,并且有些复杂。

但是,正如注释中提到的@Not_a_Golfer一样,Redis有一个名为RediSearch的模块可以为您完成工作。如果您正在使用Redis
4.0或更高版本,则可以尝试一下。

2020-06-20