【使用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 { }。