nodejs-对redis数据库进行封装

本文对比了Node.js中Redis模块从3.0到4.0的主要变化,展示了如何创建和配置Redis客户端,以及如何进行数据的增删查操作。在4.0版本中,通过URL方式配置Redis连接,并使用async/await处理异步操作。代码示例包括连接、错误处理、数据库操作函数以及实际运行示例。
摘要由CSDN通过智能技术生成

redis

  • 因为nodejs的redis模块3.0和4.0以上有差别

redis4.0代码

/**
* @Author kjprime
* @description redis4.0数据库模块
*/
const redis = require('redis')

const redis_config = {
    host: 'ip',    
    port: 'port',
    password: 'password',
    number: number,
}

const url = `redis://:${redis_config.password}@${redis_config.host}:${redis_config.port}/${redis_config.number}`

const redisClient = redis.createClient({'url': url})

redisClient.on('ready', () => {
    console.log('redis is ready...')
})

redisClient.on('error', err => {
    console.err(err)
})

async function fun(callback, key, value){
    return new Promise(async (res, rej) => {
        await redisClient.connect()     // 连接
        let ok = callback(key, value)   // 成功ok
        await redisClient.quit()        // 关闭
        res(ok)
    })
}

const db = {
    async set(key, value){
        return fun(async() => {
            return await redisClient.set(key, value)
        }, key, value)
    },
    async get(key){
        return fun(async() => {
            return await redisClient.get(key)
        }, key)
    },
    async del(key){
        return fun(async() => {
            return await redisClient.del(key)
        }, key)
    },
}
/*
 * 运行实例
 */
async function runRedis(){
    await db.set("key", "value")
    console.log(await db.get("key")) 
}
runRedis()

redis3.0代码

/**
* @Author kjprime
* @description redis3.0数据库模块
*/
const config = {
    port: port,
    ip: 'host',
    password: 'password'
}


const redis = require('redis')

const redisClient = redis.createClient(config.port, config.ip, {auth_pass: config.password})

redisClient.on('ready', () => {
    console.log('redis is ready...')
})

redisClient.on('end', err => {
    console.log('redis is quit...')
})

redisClient.on('error', err => {
    console.error('err...', err)
})


const db = {
    get: function(key){  // 查
        return new Promise((res, rej) => {
            redisClient.get(key, (err, value) => {
                if(err) rej(err)
                res(value)
            })
        })
    },
    set: function(key, value){ // 增
        return new Promise((res, rej) => {
            redisClient.set(key, value, (err, result) => {
                if(err) rej(err)
                res(result)
            })
        })
    },
    del: function(key){   // 删
        return new Promise((res, rej) => {
            redisClient.del(key, (err, result) => {
                if(err) rej(err)
                res(result)
            })
        })
    }
}


/**
 * 测试
*/
const test = async function(){
    console.log('setkey1: ', await db.set('key', 'value')) // 增
    
    console.log('getkey1: ', await db.get('key')) // 查
    
    console.log('delkey1: ', await db.del('key')) // 删   // 返回1表示删除成功

    console.log('getkey1: ', await db.get('key')) // 查

    console.log('delkey1: ', await db.del('key')) // 删   // 返回0表示没有相应的键值对

    redisClient.quit()
}
test()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值