第一步: 安装环境

window环境安装参考:https://www.redis.com.cn/redis-installation.html
linux环境安装参考:https://www.redis.com.cn/linux-install-redis.html

第二步: nodejs中使用

1、安装redis模块

npm install redis@3 --save

2、创建两个文件redis.js、redis-client.js

// redis.js
var redis = require('redis')
const port = 6379
const pwd = 'redis123456' // 连接密码
var client = redis.createClient(port, '127.0.0.1', {
    auth_pass: pwd
}) //端口号、主机

// 配置redis的监听事件
// 准备连接redis-server事件
client.on('ready', function () {
    console.log('Redis连接成功')
})

// 连接到redis-server回调事件
client.on('connect', function () {
    // console.log('redis is now connected!')
})

client.on('reconnecting', function () {
    console.log('redis reconnecting')
})

client.on('end', function () {
    console.log('Redis Closed!')
})

client.on('warning', function () {
    console.log('Redis client: warning')
})

client.on('error', function (err) {
    console.error('Redis Error ' + err)
})

// 导出redis-client对象
module.exports = client

// redis-client.js
// 引用redisClient对象
const redisClient = require('./redis')
/**
 * redis set function
 * @param key
 * @param value
 * @param expire
 */
const set = (key, value, expire) => {
    return new Promise((resolve, reject) => {
        redisClient.set(key, value, function (err, result) {
            if (err) {
                reject(err)
            }

            if (!isNaN(expire) && expire > 0) {
                redisClient.expire(key, parseInt(expire)) //有效时间单位是秒
            }
            resolve(result)
        })
    })
}

/**
 * redis get function
 * @param key
 */
const get = (key) => {
    return new Promise((resolve, reject) => {
        redisClient.get(key, function (err, result) {
            if (err) {
                reject(err)
            }
            resolve(result)
        })
    })
}

/**
 * redis remove function
 * @param key
 */
const remove = (key) => {
    return new Promise((resolve, reject) => {
        redisClient.get(key, function (err, result) {
            if (err) {
                reject(err)
            }
            redisClient.expire(key, parseInt(-1))
            resolve(result)
        })
    })
}

// rpush 将给定值推入列表的右端 返回值 当前列表长度
const rpush = (key, token) => {
    return new Promise((resolve, reject) => {
        redisClient.rpush(key, [token], function (err, result) {
            if (err) {
                reject(err)
            }
            resolve(result)
        })
    })
}
// 查询list的值
const lrange = (key, startIndex = 0, stopIndex = -1) => {
    return new Promise((resolve, reject) => {
        redisClient.lrange(key, startIndex, stopIndex, function (err, result) {
            if (err) {
                reject(err)
            }
            resolve(result)
        })
    })
}
// 清除list中n个值为value的项
const lrem = (key, n = 1, value) => {
    return new Promise((resolve, reject) => {
        redisClient.lrem(key, n, value, function (err, result) {
            if (err) {
                reject(err)
            }
            resolve(result)
        })
    })
}
module.exports = {
    get,
    set,
    remove,
    rpush,
    lrange,
    lrem
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐