koa中使用redis

2 篇文章 0 订阅

安装redis

npm i -S redis async

注意:这里安装的async非必要,但最好装上,它是在导出所有redis所有数据时会用到 

根目录下新建_redis.js:

/**
 * /cache/_redis.js
 * redis的方法get和set
*/

const redis = require('redis')
const { REDIS_CONF } = require('./config/settings.js')

// 创建客户端
const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
// console.log("redisClient:", redisClient)
redisClient.on('error', err => {
    console.error('redis error', err)
})

/**
 * redis set
 * @param {string} key 键
 * @param {string} val 值
 * @param {number} timeout 过期时间,单位 s
 */
function set(key, val) {
    if (typeof val === 'object') {
        val = JSON.stringify(val)
    }
    redisClient.set(key, val)
}
// function set(key, val, timeout = 60 * 60) {
//     if (typeof val === 'object') {
//         val = JSON.stringify(val)
//     }
//     redisClient.set(key, val)
//     redisClient.expire(key, timeout)
// }

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

            try {
                resolve(
                    JSON.parse(val)
                )
            } catch (ex) {
                resolve(val)
            }
        })
    })
    return promise
}

var async = require("async");
// 获取redis所有数据,返回数组
function redisDataList() {
    const promise = new Promise((resolve, reject) => {
        redisClient.keys("*", (err, keys) => {
            if (keys) {
                async.map(keys, function (key, cb) {
                    redisClient.get(key, function (error, value) {
                        if (error) return cb(error);
                        var dongle = {};
                        dongle['key'] = key;
                        dongle['value'] = JSON.parse(value);
                        cb(null, dongle);
                    });
                }, function (error, results) {
                    if (error) return console.log(error);
                    resolve(results)
                });
            }
        })
    })
    return promise
}
// function keys() {
//     const promise = new Promise((resolve, reject) => {
//         redisClient.keys("*", (err, keys) => {
//             if (err) {
//                 reject(err)
//                 return
//             }
//             try {
//                 resolve(
//                     keys
//                 )
//             } catch (ex) {
//                 resolve(keys)
//             }
//         })
//     })
//     return promise
// }

module.exports = {
    set,
    get,
    redisDataList
}

使用:

await _redis.get('key')

await _redis.set('key',123)

await _redis.redisDataList()

获取指定字符串开头的所有key。如获取所有以AUS:Auth:Old_Dongle:Online_Time_Hb_开头的key

注意:

npm i redis@3.1.2 -S

 注意redis版本,太高可能会报错,如下:

 app.js,或者子路由页面

const redis = require('redis')

const client = redis.createClient(6379, '127.0.0.1')

client.on('error', (err) => {
  console.log(err);
})

client.set('b', '123')
client.expire('b', 4)//4秒后过期,并自动被删除掉

client.get('b', (err, value) => {
  if (err) throw err
  console.log(value);
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值