很久没有写Node.js代码了,最近更新了自己的网站,对之前的重新写了一遍升级了2.0版本。在网站中有这样一个功能,禁止一个IP频繁去发送留言,这里就用到了Redis,使用Redis存储IP和当前写入数据库的时间。这里直接上代码,不详细介绍Redis了。Redis的连接,插入,取出进行封装成module:
var redisDb = {};
var log4js = require('log4js');
log4js.configure('../config/log4j.json');
var logger = log4js.getLogger('redis');
var redis = require("redis");
var client = redis.createClient('6379', '127.0.0.1');
client.on('error',function (err) {
logger.error('redis error:'+err);
});
client.on('connect',function () {
logger.info('redis连接成功...')
});
/**
*
* @param dbNum 库号
* @param key 键
* @param value 值
* @param expire 过期时间(单位:秒,可为空,为空则不过期)
* @param callback 回调
*/
redisDb.set = function (dbNum,key,value,expire,callback) {
client.select(dbNum,function (err) {
if (err){
logger.error('redis set 选库失败:'+err);
}else {
client.set(key,value,function (err,result) {
if (err){
logger.error('redis插入失败:'+err);
callback(err,null);
return
}
if (!isNaN(expire) && expire>0){
client.expire(key, parseInt(expire));
}
callback(null,result);
})
}
})
};
redisDb.get = function (dbNum,key,callback) {
client.select(dbNum,function (err) {
if (err){
logger.error('redis get 选库失败:'+err);
}else {
client.get(key,function (err,result) {
if (err){
logger.error('redis获取失败:'+err);
callback(err,null);
return
}
callback(null,result);
})
}
})
};
module.exports = redisDb;
使用方法:
1、导入封装的方法模块,路径根据自己项目中的来获取
var redisDb = require('../../modules/redis');
2、get方法获取key对应的value值的使用
redisDb.get('0', key, function (err, result) {
if(err){
logger.error(err)
}else{
logger.info(result)
}
}
3、set方法的使用:
redisDb.set('0', key, value, time, function (err, result) {
if (err) {
logger.error('redis设置失败:' + err);
} else {
logger.info( result);
//设置成功
}
});
4、对于使用方法中的参数,可以看封装类里面的参数说明。
说明:
1、除了在本地安装Redis服务以外,还要引入Node.js中Redis库,使用npm install redis安装。
2、Redis有16个库,上述代码中的client.select()中的参数就是选择库号。
3、在Redis设置值时可以设置过期时间,当到了过过期时间时,Redis服务会删除该数据。
4、在Redis使用get方法获取value时,当key不存在的时候,result返回null。
5、在Redis使用set方法设置key-value时,设置成功则result返回OK。
6、Redis还有很多需要学习的地方,上述是个人使用过程中总结出来的,好了,就到这了。