在Node.js中,可以使用node_redis模块来操作Redis数据库,实现缓存功能。
首先需要安装node_redis模块:
npm install redis
接着,在代码中引入模块:
const redis = require('redis');
连接Redis数据库:
const client = redis.createClient({
host: 'localhost',
port: 6379
});
然后就可以使用Redis的API操作缓存了,例如:
client.set('key', 'value', (err, reply) => {
console.log(reply);
});
client.get('key', (err, reply) => {
console.log(reply);
});
上述代码中,set方法用于设置缓存,get方法用于获取缓存。
分布式锁是多个进程或机器之间协调的一种机制,用于保证同一时刻只有一个进程或机器可以执行关键代码。
在Redis中,可以使用SETNX命令实现分布式锁。具体步骤如下:
示例代码如下:
const lockKey = 'myLock';
const lockExpire = 30000; // 锁的过期时间,单位为毫秒
const waitInterval = 1000; // 等待获得锁的时间间隔,单位为毫秒
function acquireLock(callback) {
const now = Date.now();
const expire = now + lockExpire + 1; // 锁的过期时间需要加1,防止出现竞争情况
client.setnx(lockKey, expire, (err, result) => {
if (err || result !== 1) {
// 获得锁失败,等待一段时间后再次尝试获得锁
setTimeout(acquireLock.bind(null, callback), waitInterval);
} else {
// 获得锁成功
callback();
}
});
}
function releaseLock() {
client.del(lockKey);
}
上述代码中,acquireLock函数用于获得锁,releaseLock函数用于释放锁。