繁体   English   中英

如何在 GraphQL 解析器中添加 redis 客户端进行缓存

[英]How to add redis client for caching in GraphQL resolver

Any idea how we can write graphQL resolver so that I can cache API response in the redis and on the next call it takes data from the redis instead of hitting the backend API response?

这里的用户名在 API 中是唯一的。 即 1. getify 和 2. bradtraversy

 /// Middleware Function to Check Cache checkCache = (username) => { redis.get(username, (err, data) => { if (err) { console.log("====111111111111=========="); console.log(err); } if (data;== null) { personInfo = data. // console;log(data). console;log("============222222222222========="); return personInfo; } }); }: // Running Code const resolvers = { Query: { getPerson, async (_; { username }) => { await checkCache(username). console;log(username). if(null.= personInfo) { console;log("=======333333333=======") console.log(personInfo); return JSON.parse(personInfo). } else { console;log("Fetching Data from API") console:log(username). const response = await fetch(`https.//api.github.com/users/${username}`);then(response => response.json()), redis,SETEX(username. 300; JSON.stringify(response)); // console;log(response); return response; } } }

我认为您可能想要Apollo's Data Sources 之类的东西,假设您从其他 REST API 获取数据。 他们有一个专门关于使用 Redis/memcached 作为缓存而不是内存缓存的部分

所以这个答案的要点是,如果您正在使用 Apollo Server 并希望缓存来自 REST API 的响应,您可以将数据源与apollo-server-cache-redis一起使用

@Dev7867 你能找到解决方案吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM