const redis = require('redis');
const { promisify } = require('util');
// 创建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);
// 缓存数据的函数
async function cacheData(key, data, ttl) {
// 将数据缓存到Redis中
await setAsync(key, JSON.stringify(data), 'EX', ttl);
}
// 获取缓存数据的函数
async function getCachedData(key) {
const cachedData = await getAsync(key);
if (cachedData) {
return JSON.parse(cachedData);
}
return null;
}
// 示例:使用缓存机制
async function exampleUsage() {
const key = 'myDataKey';
const data = { hello: 'world' };
const ttl = 10; // 缓存有效期为10秒
// 尝试从缓存中获取数据
let result = await getCachedData(key);
if (result) {
console.log('数据从缓存中读取:', result);
} else {
// 缓存中没有数据,从数据库或其他数据源获取数据
console.log('数据未在缓存中,从数据源获取...');
// result = await fetchDataFromSource(); // 假设这是从数据源获取数据的函数
// 缓存数据
await cacheData(key, result, ttl);
}
}
// 启动示例
exampleUsage();
这段代码展示了如何在Node.js中使用Redis客户端来缓存数据。首先,我们创建了一个Redis客户端并将其方法转换为Promise版本。然后定义了cacheData
和getCachedData
两个异步函数,分别用于缓存和获取数据。最后,我们通过exampleUsage
函数演示了如何使用这些函数。