我需要在类似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
SET``LIST
SADD company:Disney userid1 SADD company:Disney userid2 SADD company:OtherCompany userid3
当您需要更新数据时,请执行以下步骤:
SMEMBERS company:Disney
GET userid
SET userid new-attributes
这是实现目标的内置方法,需要更多的工作,并且有些复杂。
但是,正如注释中提到的@Not_a_Golfer一样,Redis有一个名为RediSearch的模块可以为您完成工作。如果您正在使用Redis 4.0或更高版本,则可以尝试一下。