const Koa = require('koa');
const redis = require('redis');
const { promisify } = require('util');
// 创建Koa应用
const app = new Koa();
// 创建Redis客户端
const redisClient = redis.createClient({
url: 'redis://localhost:6379'
});
// 将Redis客户端的各个异步方法转换为Promise版本
const getAsync = promisify(redisClient.get).bind(redisClient);
const setAsync = promisify(redisClient.set).bind(redisClient);
// 中间件:处理GET请求并操作Redis
app.use(async (ctx) => {
if (ctx.request.method === 'GET') {
const key = 'my_key';
const value = await getAsync(key); // 异步获取key的值
ctx.body = value || 'No value found';
if (!value) {
await setAsync(key, 'initial_value'); // 如果没有值,设置初始值
}
}
});
// 启动服务
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这段代码创建了一个简单的Koa服务器,并集成了Redis客户端。它演示了如何使用Promise来简化异步代码,并处理了GET请求,从Redis中获取键对应的值,如果没有找到值,它还会设置一个初始值。这个例子是学习如何在Node.js中使用Koa和Redis的一个很好的起点。