KeyvAdapter 类
这个 KeyvAdapter 类是简单的包装 Keyv 执行 KeyValueCache 接口 @apollo/utils.keyvaluecache 软件包。 此类用于(但不限于)阿波罗服务器的缓存. Keyv 支持一些有用的适配器,如Redis,Mongo,SQLite等.
使用量
以下是使用Redis商店来取取阿波罗Server缓存的例子:
安装必要的软件包 :
npm install @apollo/utils.keyvadapter keyv @keyv/redis
说明: 这个库的最新版本(v4和上)只与Keyv版本5相通. 为了与Keyv更古老的版本4合作,可以取而代之的是这个库的版本3.
在阿波罗服务器 v3 中:
import { ApolloServer } from "apollo-server";
import { KeyvAdapter } from "@apollo/utils.keyvadapter";
import Keyv from "keyv";
import KeyvRedis from "@keyv/redis";
new ApolloServer({
cache: new KeyvAdapter(new Keyv({ store: new KeyvRedis("redis://...") })),
});
在阿波罗服务器 v4 中:
import { ApolloServer } from "@apollo/server";
import { KeyvAdapter } from "@apollo/utils.keyvadapter";
import Keyv from "keyv";
import KeyvRedis from "@keyv/redis";
new ApolloServer({
cache: new KeyvAdapter(new Keyv({ store: new KeyvRedis("redis://...") })),
});
选项
禁用批次读取
默认, KeyvAdapter 将使用 DataLoader批量功能 ,以便在可能时请求一份密钥列表.
- 狦
Keyv.store执行getMany,此选项将随密钥列表一起调用DataLoader。 。 。 . - 狦
Keyv.store未执行getMany, (中文(简体) ),get每个密钥将同时被调用Promise.all()) (中文(简体) ).
Redis.Cluster 从 ioredis 不支持 mget (因此, store.getMany 因此批量应像这样被禁用:
new ApolloServer({
cache: new KeyvAdapter(new Keyv({ store: new KeyvRedis("redis://...") }), {
disableBatchReads: true,
}),
});