Graphql server + NodeJS,使用Redis将数据存储在缓存中

时间:2018-05-29 08:03:01

标签: node.js redis graphql

我想知道如何通过将graphql连接到api来改善响应时间。我决定使用Redis。我不知道我该怎么做。

我已经构建了我的graphql服务器:

import express from 'express';
import {
    graphqlExpress,
    graphiqlExpress,
} from 'graphql-server-express';
import bodyParser from 'body-parser';

import { schema } from './src/schema';
import cors from 'cors';

import redis from 'redis';

const PORT = 4000;
const server = express();

const client = redis.createClient();

client.on('error', function (err) {
    console.log('error' + err)
});

server.use('*', cors({ origin: 'http://localhost:3000' }));

server.use('/graphql', bodyParser.json(), graphqlExpress({
    schema, context: { client }
}));


server.use('/graphiql', graphiqlExpress({
    endpointURL: '/graphql'
}));



server.listen(PORT, () =>
    console.log(`GraphQL Server is now running on http://localhost:${PORT}`)
);

我已经在这里导入了redis。我的graphql服务器由cors连接到首页,所以我可以从api渲染字符串。在解析器中,我通过Node.js连接到api(如果需要,我将添加它。),我在这里有一些自定义解析器。来自api的响应时间(也影响页面上的渲染)太慢 - 大约10~15秒。

1 个答案:

答案 0 :(得分:0)

我建议您查看Apollo Engine以更好地了解GraphQL的工作方式,并更轻松地使用附加组件(如Redis缓存)。使Apollo Engine工作后,您可以使用apollo-server-redis-cache创建缓存。

如果您的请求在没有缓存的情况下需要10-15个,我还会先尝试优化它们,然后再将Redis放在它们面前。