gpt4 book ai didi

mongodb - 如何使用 Redis 优化 Graphql

转载 作者:IT王子 更新时间:2023-10-29 06:13:13 25 4
gpt4 key购买 nike

目前我有 graphql 和 mongodb,现在我想添加 redis 层来优化服务器响应时间。

假设我有这样的模式:

type Query{
book(id: ID):Book
}
type Book{
# simple fields direct come from mongodb collection Book
A
B
C

# fields with values generated from simple fields
X
Y
Z

# fields with aggregated data from other db collections e.g avg/min/max
L
M
N

}

问题来了:我应该在 Redis 中存储什么样的数据?

1) 来自数据库的字符串化原始文档,由 ID 键控

2) 将每个计算出来的字段放入redis的hash值中,每个字段使用redis的HGET

以下是我对上述选项的担忧:

1) 字段 ABC/XYZ 应该没问题,但 LMN 会导致额外的数据库访问

2)查询Book的所有字段时,每个字段都会有一个HGET,而且大部分都是简单的值,可能是发起请求太多浪费时间了?

最佳答案

一般来说,缓存的想法是以您想要的方式放置数据。然而,Redis 在内存中并且内存并不便宜 - 所以我不会在序列化开销上浪费内存。也就是说,只需将值放入 Redis 哈希(每个字段一个值)。

关于在请求上浪费时间(我假设您指的是 Redis),这不是一个大问题。 Redis 的底层协议(protocol)非常高效,您可以这样做(给定图书 ID“book1234”):

  • HGETALL book1234 获取所有内容
  • HGET book1234 A B C X Y Z L M N(或您选择的字段)。 HGET 是可变的(自 Redis 4 起),因此您可以只提供所需的字段。

最后,如果你有能力安装 Redis 模块,你可能想看看 ReJSON ,它允许本地处理 JSON 数据 - 允许您从结构中挑选数据。这可能是两全其美的方法。

关于mongodb - 如何使用 Redis 优化 Graphql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com