python - 用redis或者mongodb存储用户信息

标签 python mongodb redis

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

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

当用户登录或更改任何用户信息时,此信息从数据库中获取并存储在 session 中的内存中。

我有一些使用 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 都发生了很大变化......

最佳答案

您可以使用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以上的,可以试试。

关于python - 用redis或者mongodb存储用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028596/

相关文章:

python - 如何删除 numpy 数组中相邻的重复值?

python - 运行 python 脚本解析 IOS 配置文件时出现错误消息

Mongodb架构设计

php - 在 PHPRedis session 上设置过期

python - Docker+Django,服务器运行但欢迎页面不显示

python - NLTK 无法找到 java 文件!用于斯坦福 POS 标记器

javascript - Mongoose 获取数据,设置在列表中(未定义)

MongoDB - 无权执行命令

scala - 使用 Scala 在 Redis 数据库中存储 Set 对象

php - 将 predis 故障转移到 redis 从站的最佳方法是什么?