根据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")
.....
}