RediQLess 将GraphQL的强类型模式和查询的精度与Redis的动态缓存和延迟监控相结合。复杂的缓存变得简单。
RediQLess 缓存对第三方 API 的独特调用,以实现最终的可移植性和最大的可重用性。RediQLess 的缓存用作 API 的替代品。
为开发人员提供尽可能轻量级的数据库,运行速度平均比对 API 的标准调用快 80% 到 90%。同时避免过多地调用第三方 API。
作为中间件的 RediQLess 由两个类对象提供支持,即 RediQL 和 RediCache:如果 RediCache 发现传入的查询信息存储在 Redis 中,则 RediCache 能够在不到 15 毫秒的时间内返回请求的数据。如果 RediCache 在 Redis Store 中找不到传入的查询,则该查询将通过 RediQL 发回,以通过 GraphQL 获取请求的 API 模式中的信息。
这个包是为了与 redis 一起工作。
RediQLess是为Node.js/Express服务器构建的,具有极其简单的实施过程,因此开发人员可以轻松地掌握流程并开始缓存。
代码案例如下:
// Require in Express and app const express = require('express'); const app = express();// Require/Config dotenv for access to your PORT const dotenv = require('dotenv').config(); const PORT = process.env.PORT;// Require GraphQL and Schema const graphql = require('express-graphql'); const schema = require('./schema/schema');// Initialize up Redis Client const redis = require('redis'); const redisClient = redis.createClient({ host: 'localhost', port: 6379, });// Require in RediQLess middleware const { RediQLess } = require('rediqless'); // Pass redisClient into RediqLess Constructor const RediQL = new RediQLess(redisClient); // Implement RediQLess' query capability const RediQLQuery = RediQL.query; // Implement RediqLess' cache clearing capability const RediQLClear = RediQL.clearCache;// Leverage RediQLess Queries // ** Assign queries on the front-end to 'req.body.data.query' app.use('/rediql', RediQLQuery, (req, res) => { return res.status(202).send(res.locals.query)) });// Leverage RediQLess Cache Clearing app.use('/clearcache', RediQLClear, (req, res) => { return res.status(202).send('Cache Cleared') });// RediQLess query will forward request to this Middleware if information is not yet cached app.use('/graphql', graphqlHTTP.graphqlHTTP({ schema, graphiql: true }));
|