Node.js连接Redis数据库以及封装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wb_001/article/details/84856264

很久没有写Node.js代码了,最近更新了自己的网站(www.wb233.cn),对之前的重新写了一遍升级了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还有很多需要学习的地方,上述是个人使用过程中总结出来的,好了,就到这了。

猜你喜欢

转载自blog.csdn.net/wb_001/article/details/84856264