下载安装ioredis
npm i ioredis
pnpm add ioredis
yarn add iosredis
创建 Redis 客户端连接:
const Redis = require('ioredis');
// 创建一个普通 Redis 连接
const redis = new Redis({ host: 'localhost', port: 6379 });
// 或者创建一个连接 Redis Sentinel 或 Cluster 的连接
// const redis = new Redis.Cluster([/* sentinel nodes or cluster nodes */]);
// 或者创建一个连接池
const redis = new Redis.Cluster(/* options */, { enableReadyCheck: true, enableOfflineQueue: true });
添加键值对向redis
// 设置键值对
redis.set('key', 'value', (err, reply) => {
if (err) throw err;
console.log(reply); // 输出: 'OK'
});
// 获取键的值
redis.get('key', (err, reply) => {
if (err) throw err;
console.log(reply); // 输出: 'value'
});
// 异步/await 语法示例
async function example() {
await redis.set('asyncKey', 'asyncValue');
const value = await redis.get('asyncKey');
console.log(value); // 输出: 'asyncValue'
}
example();
给键值对设置过期时间
(async () => {
try {
// 设置键值对,并设置其过期时间为5秒
await redisClient.set('expireKey', 'expireValue', 'EX', 5);
// 或者,使用毫秒作为单位设置过期时间
// await redisClient.set('expireKeyMs', 'expireValueMs', 'PX', 5000);
// 查看键的剩余生存时间(以秒为单位)
const ttlInSeconds = await redisClient.ttl('expireKey');
console.log(`expireKey will expire in ${ttlInSeconds} seconds`);
// 查看键的剩余生存时间(以毫秒为单位)
// 注意:Redis本身是以秒为单位计算TTL,这里的毫秒级精度依赖于ioredis的实现
const ttlInMilliseconds = await redisClient.pttl('expireKey');
console.log(`expireKey will expire in approximately ${ttlInMilliseconds} milliseconds`);
} catch (error) {
console.error('Error setting key expiration:', error);
}
})();
关闭redis连接
redis.quit(); // 对于单个连接
// 或
redis.disconnect(); // 对于连接池