node-redisとioredisあたりがよく使われているみたい。
redisには型ごとに様々なコマンドがある。
https://www.tutorialspoint.com/redis/index.htm
そのなかでも、結果によって、0 or 1 を返してくれる便利なものもある。
この0 or 1の結果を利用したいときにioredisを使ったほうがasync/awaitを使えるのでネストが深くなったりしなくて済む。
以下では、setnxコマンド(keyがすでに存在していれば→0, なければセットして→1を返す)を例に上げて比べてみる。
node-redisで返り値を取得する方法
constredis=require('redis');constclient=redis.createClient();client.setnx(['name',name],(err,result)=>{console.log(result)// result = 0 or 1}
ioredisで返り値を取得する方法
constioredis=require('ioredis')constioclient=ioredis.createClient()..省略async()..try{constresult=awaitioclient.setnx(['name',name])console.log(result)// result = 0 or 1}catch(err){console.log(err)}..省略
ioredisだとPromiseインスタンスでredisコマンドの結果を返してくれるのでasync/awaitでネストが深くなるのを阻止できる。
試しにawaitを外してみると、Promise { <pending> }
が返ってくる。