4

oslabs-beta/DacheQL: GraphQL 缓存工具

 1 year ago
source link: https://www.jdon.com/63064
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

oslabs-beta/DacheQL: GraphQL 缓存工具


DacheQL能简化 GraphQL 查询的缓存过程,以便开发人员提高其应用程序性能。
DacheQL 是一个利用 Redis 和 LRU 驱逐策略的轻量级 GraphQL 缓存工具。

GraphQL 是一种 API 查询语言,也是一种使用现有数据完成这些查询的运行时。GraphQL 为您的 API 中的数据提供了完整且易于理解的描述,使客户能够准确地询问他们需要什么,仅此而已,使 API 更容易随着时间的推移而发展,并支持强大的开发人员工具。

使用 GraphQL,您可以指定要从 API 请求的数据。你会得到你所需要的,不多也不少。GraphQL 查询总是返回可预测的结果。

安装和设置
如果您尚未安装 dacheql,请运行以下命令将 DacheQL 安装到您的应用程序中:npm install dacheql

将 DacheQL 与 Redis 一起使用
DacheQL 有两种使用方式。使用 DacheQL 的第一种方法是将其与 Redis 一起使用,Redis 是一种开源的内存数据存储,可用于客户端缓存。您需要确保您的计算机上已经安装了 Redis。

连接 Redis 客户端后,只需将其传递给我们的 DacheQL 函数,如下所示:

app.use(‘/graphql’, dacheQL({ redis } = {<redis: client>}, capacity, endpoint, TTL), expressGraphQL({ schema: schema, graphiql: true, }));

只需替换<redis: client>为redis: *name of your client*

由于我们使用的是 Redis,因此第二个参数capacity无关紧要,因为它用于我们的 LRU 缓存。你可以简单地capacity用任意的东西替换,比如50.
第三个参数是您实际使用 GraphQL 的端点。这个端点可能类似于http://localhost:3000/graphql
我们的最后一个参数TTL是驻留在 Redis 缓存中的时间。只需传入您希望查询在缓存中持续的时间(以秒为单位,如50)。

现在您可以使用 Redis 缓存 GraphQL 响应了!

将 DacheQL 与我们的自定义 LRU 驱逐策略缓存一起使用
如果您不使用 Redis 缓存,DacheQL 提供了一个中间件,用于使用服务器内存和我们的自定义缓存进行缓存,该缓存的行为符合 LRU 驱逐策略。您应该为此中间件输入的参数如下:
对于第一个参数,由于您没有使用 Redis,因此只需{}像这样传入一个空对象。
接下来是您希望缓存容纳的容量。这个容量是指我们的缓存何时开始驱逐项目。例如,如果您将容量设置为 50,它将在第 51 个唯一查询时驱逐一个项目。需要注意的是,如果你传入一个非整数,它会为你四舍五入。非整数、负数和小于 2 的容量将默认为简单地创建 GraphQL 提取而不将值存储在缓存中。
第三个参数是您实际使用 GraphQL 的端点。例如,这可能是http://localhost:3000/graphql.
我们的最后一个参数是生存时间,或者您希望此特定查询在缓存中持续多长时间。由于我们在这里没有使用 Redis,因此只需为您的 TTL 传递任何内容,因为我们的缓存不依赖此信息。
现在您可以使用我们的自定义 LRU 驱逐策略缓存您的 GraphQL 响应了!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK