在 Apollo Server v4 中使用 Redis 缓存可以通过以下步骤实现:
npm install redis
Redis
包:const { RedisCache } = require('apollo-server-cache-redis');
cache
选项:const redisCache = new RedisCache({
host: 'localhost', // Redis 服务器的主机地址
port: 6379, // Redis 服务器的端口号
});
const server = new ApolloServer({
typeDefs,
resolvers,
cache: redisCache,
});
cacheKey
选项来设置缓存键。以下是一个示例 schema:type Query {
getUser(id: ID!): User
@cacheControl(maxAge: 3600)
@cacheKey(fields: ["id"])
}
在这个示例中,我们将以 getUser:id:{id}
作为缓存键的格式。
del
方法来删除缓存。以下是一个示例:const { RedisClient } = require('redis');
const redisClient = new RedisClient({
host: 'localhost',
port: 6379,
});
redisClient.del('getUser:id:123');
这样,当你调用 getUser
查询时,它将首先检查 Redis 缓存中是否存在缓存结果,并在缓存命中时直接返回结果。如果缓存中没有找到结果,Apollo Server 将执行相应的解析器函数,并将结果存储到 Redis 缓存中,以便下次查询时使用。
希望这个解决方案对你有帮助!