使用Redis或mongodb存储用户信息
我需要在类似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都发生了很大变化。
回答:
您可以使用或来为 公司 字段构建二级索引:SET``LIST
SADD company:Disney userid1SADD company:Disney userid2
SADD company:OtherCompany userid3
当您需要更新数据时,请执行以下步骤:
- 搜索公司索引以获取用户ID:
SMEMBERS company:Disney
- 搜索用户索引以获取用户属性:对于每个用户,请执行以下操作:
GET userid
- 更新属性
- 更新用户索引:对每个用户执行以下操作:
SET userid new-attributes
这是实现目标的内置方法,需要更多的工作,并且有些复杂。
但是,正如注释中提到的@Not_a_Golfer一样,Redis有一个名为RediSearch的模块可以为您完成工作。如果您正在使用Redis
4.0或更高版本,则可以尝试一下。
以上是 使用Redis或mongodb存储用户信息 的全部内容, 来源链接: utcz.com/qa/422252.html