node-redis增删改查

631 阅读1分钟

// 导入redis

const redis = require('redis'); const config = require('../config');

// 建立与redis的连接

const client = redis.createClient(config.port, config.host);

// 使用on来监听状态

client.on('connect', () => console.log('与redis成功建立连接')); client.on('ready', () => console.log('redis服务已经就绪')); client.on('error', err => console.error('redis服务产生了错误:', err));

class RedisUtil {

/**
 *  保存键值对
 * @param key
 * @param value
 */
save(key, value, expire) {
    // 保存入库
    return new Promise((resolve, reject) => {
        client.set(key, JSON.stringify(value), (err, result) => {
            console.log('数据存储成功');
            if (err) {
                console.log(err);
                reject(err);
            }

            if (!isNaN(expire) && expire > 0) {
                client.expire(key, parseInt(expire));
            }

            resolve(result)
        });
    })
}

/**
 * 根据key查询redis value
 * @param key
 */
query(key) {
    return new Promise((resolve, reject) => {
        client.get(key, (err, result) => {
            if (err) {
                console.log(err);
                reject(err);
            }
            resolve(result);
        })
    })
}

/**
 * 更新redis中的信息
 * @param key
 * @param value
 */
update(key, value) {
    // 更新的本质其实还是执行redis的set
    // 首先通过key获取对象,如果获取不到,返回异常,可以获取,继续执行set
    const condition = value;
    return new Promise((resolve, reject) => {
        client.get(key, (err, value) => {
            if (err) {
                console.error('查询redis数据异常');
                reject(err);
            }
            if (value) {
                // 执行set
                client.set(key, JSON.stringify(condition), (err, result) => {
                    if (err) {
                        console.error('数据更新失败');
                        reject(err);
                    }
                    console.log('信息更新成功');
                    resolve(result);
                });
            } else {
                console.err(`根据用户名:${key}无法查询到的信息`);
                reject(`根据用户名:${key}无法查询到的信息`);
            }
        });
    })
}

/**
 * 删除
 * @param key
 */
delete(key) {
    return new Promise((resolve, reject) => {
        client.del(key, (err, result) => {
            if (err) {
                console.error('数据删除失败');
                reject(err);
            }
            console.error('数据删除成功');
            resolve(result);
        });
    })
}

}

module.exports = RedisUtil