graphql阿波罗服务器如何使用memcached作为缓存系统?



根据apollo文档,我无法使用telnet命令从memcached获取数据。数据似乎是缓存的,因为当我重新发送相同的请求时,数据源不调用api。


const server = new ApolloServer({
typeDefs,
resolvers,
cache: new MemcachedCache(
'127.0.0.1:11211',
{ retries: 10, retry: 10000 }, // Options
),
dataSources: () => ({
moviesAPI: new MoviesAPI(),
}),
});

我尝试在虚拟项目中手动实现memcached,并且我能够在telnet接口中设置/获取数据。

memcached是由graphql查询还是需要在解析器中手动查询?

欢迎任何帮助

将缓存传递给ApolloServer初始化的选项是可选的。也就是说,缓存大大降低了数据库读取的速度。您必须在任何数据源类的初始化中传递给定的缓存,如下所示:

class DogCustomDataSource extends CustomDataSource{
constructor(models){ 
....
}
initialize({context,cache}){
this.context=context
this.cache=cache
}
}

是的,你是对的,随后,你必须在你的数据源的方法中设置和删除对象到缓存,像这样:

async get(id,{ttlInSeconds}={}){
.....
await this.cache.set("yourKey","yourValue",{ttl:ttlInSeconds})
//or
await this.cache.del("yourKey")
.....
}

最新更新