刷新阿波罗服务器中的Redis缓存

时间:2019-08-04 10:33:06

标签: javascript redis graphql apollo-server

我将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
  })
});

0 个答案:

没有答案