Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8886

LambdaからRedisのデータを取得したい

$
0
0

使用するもの

  • Lambda
  • Redis

私の環境

Node 12系

DockerでLamdaを用意しています。方法については、以下の記事を参考にしてください。
https://qiita.com/gdtypk/items/78b6a76dc9f212296c89

Redisも同様にDockerで起動しています。
redis:4.0

困ったこと

Node.jsは非同期で動作するので、そのあたりが苦労した。

コード

constredis=require("redis");constPromise=require('bluebird');// 接続情報constconfig={host:'redis',port:6379};letclient=null;letvalue="";constkey="key";exports.handler=async(event,context)=>{try{//Redisに接続client=awaitconnectRedis();// データの取得value=awaitfindValueOfKey(client,key);//Redisとの接続を切断disconnectRedis();//レスポンス返却console.error('レスポンス:'+value);context.succeed({statusCode:200,body:JSON.stringify(value)});}catch(error){console.error('エラー:',error);disconnectRedis();}};/** 
 * Redisに接続する処理。
 */functionconnectRedis(){returnnewPromise(function(resolve,reject){constclient=redis.createClient(config);client.on('connect',()=>{console.log('接続OK');resolve(client);});client.on('error',(error)=>{console.log(`接続NG`);reject(error);});});}/**
 * Redisとの接続を切断する。
 */functiondisconnectRedis(){if(client){console.log("切断します");client.end(true);}}/**
 * Keyを使用し、Valueを取得する。
 * @param client
 * @param key
 */functionfindValueOfKey(client,key){returnnewPromise(function(resolve){client.get(key,(err,reply)=>{resolve(reply);});});}

おわり

もっといい書き方があったり、コードがおかしいとかあれば、教えて下さい。


Viewing all articles
Browse latest Browse all 8886