【问题标题】:Store user information with redis or mongodb用redis或mongodb存储用户信息
【发布时间】:2019-04-01 09:17:27
【问题描述】:

我需要将一些用户和文档状态信息存储在类似 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 都发生了很大变化......

【问题讨论】:

  • 读取操作是什么?你能发布一些你期待的阅读电话吗?
  • 尝试重新搜索redisearch.io

标签: python mongodb redis


【解决方案1】:

您可以使用SETLISTcompany 字段构建二级索引:

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 或以上版本,可以试试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2017-10-21
    • 2012-05-26
    • 2018-10-20
    • 2020-03-17
    • 2016-08-17
    • 2017-04-21
    相关资源
    最近更新 更多