【使用async/await在Node.js中操作Redis】

据说Node-Redis和Ioredis是常用的库。

redisには型ごとに様々なコマンドがある。
https://www.tutorialspoint.com/redis/index.htm

其中一些还有一种实用的功能,会根据结果返回0或1。

在需要使用这个0或1的结果时,使用ioredis可以使用async/await,这样可以避免嵌套深度增加。

我们将以setnx命令(如果键已存在则返回0,否则将其设置并返回1)作为例子进行比较。

通过node-redis来获取返回值的方法

const redis = require('redis');
const client = redis.createClient();

client.setnx(['name', name], (err, result) => {
    console.log(result)
        // result = 0 or 1
}

通过使用ioredis来获取返回值的方法

const ioredis = require('ioredis')
const ioclient = ioredis.createClient()
..省略 async () ..
try{
    const result = await ioclient.setnx(['name', name])
    console.log(result)
        // result = 0 or 1
}catch(err){
    console.log(err)
}
..省略

在 ioredis 中,它使用 Promise 实例来返回 redis 命令的结果,这样可以通过 async/await 阻止嵌套深度增加。

如果试着去掉 await,会返回 Promise { }。

广告
将在 10 秒后关闭
bannerAds