我将redis与apollo服务器结合在一起。我需要一种特定的缓存行为:如果Redis中提供了缓存密钥,请先提供缓存中的响应,然后通过重新获取请求来刷新缓存的内容。
我的依赖项:
“ apollo-server-cache-redis”:“ 1.0.0”
“ apollo服务器”:“ ^ 2.6.7”
我已经开始尝试使用server.js,可以拦截redis中的缓存key
。但是,我需要实现刷新功能,并且需要帮助。有人告诉我有可能,因为我可以访问apollo-server实例。
const { RedisCache } = require('apollo-server-cache-redis');
import responseCachePlugin from 'apollo-server-plugin-response-cache';
const refresh = (key) => {
const apolloServer = getServer();
// implement the cache refresh by key.
};
class CustomRedis extends RedisCache {
constructor(options) {
super(options);
}
async get(key) {
let supRes = await super.get(key)
if (supRes != undefined) {
this.refresh(key)
}
return supRes
}
}
export const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
const server = new ApolloServer({
schema,
dataSources: () => ({
postsApi: new postsApi()
}),
plugins: [responseCachePlugin()],
cache: new CustomRedis({
host: 'redis',
port: 6379
})
});