gpt4 book ai didi

caching - 何时在 GraphQL 服务器设置中使用 Redis 以及何时使用 DataLoader

转载 作者:可可西里 更新时间:2023-11-01 11:23:16 25 4
gpt4 key购买 nike

我已经在 GraphQL 服务器上工作了一段时间,虽然我了解大部分方面,但我似乎无法掌握缓存。

当谈到缓存时,我看到 DataLoader 和 Redis 都被提及,但我不清楚何时应该使用什么以及如何使用它们。

我认为DataLoader更多的是在字段级别使用来应对n+1问题?我猜 Redis 是不是处于更高的水平?

如果有人能阐明这一点,我将不胜感激。

谢谢。

最佳答案

DataLoader 主要是一种对某些数据源进行批处理请求的方法。但是,它可以根据每个请求 选择性地使用缓存。这意味着,在执行相同的 GraphQL 查询时,您只会获取特定实体一次。例如,我们可以同时调用 load(1)load(2),它们将被批处理到一个请求中,以获取与这些 ID 匹配的两个实体。如果另一个字段稍后在执行相同的请求时调用load(1),那么该调用将简单地返回我们获取的ID为1的实体之前没有向我们的数据源发出另一个请求。

DataLoader 的缓存是特定于单个请求的。即使同时处理两个请求,它们也不会共享一个缓存。 DataLoader 的缓存没有过期时间——它也不需要过期,因为一旦请求完成,缓存就会被删除。

Redis 是一种键值存储,用于缓存、队列、PubSub 等。我们可以用它来提供response caching ,这将使我们能够有效地绕过一个或多个字段的解析器,并改为使用缓存的值(直到它过期或无效)。我们可以将其用作 GraphQL 与数据库、API 或其他数据源之间的缓存层——例如,这就是 RESTDataSource。做。我们可以将其用作 a PubSub implementation 的一部分在实现订阅时。

DataLoader 是一个小型库,用于解决特定问题,即对数据源生成过多请求。使用 DataLoader 的替代方法是在根级别获取您需要的一切(基于请求的字段),然后让默认解析器逻辑处理其余部分。 Redis 是一种具有多种用途的键值存储。您需要其中之一,还是两者都需要,取决于您的特定业务案例。

关于caching - 何时在 GraphQL 服务器设置中使用 Redis 以及何时使用 DataLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57514433/

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