Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Express.js 用の Redis キャッシュの構築:ステップバイステップ ガイド

この記事では、Redis キャッシュを使用したサンプル アプリケーションと説明を提供します。

Express Node JS アプリケーションの作成方法については、この記事を参照してください。そうすれば、すぐに本題に移ることができます。

キャッシュが必要な理由

同じ応答を複数回提供する必要がある場合は、データを分散サーバー メモリに保存すると、呼び出しごとにストレージ層からデータを取得するよりも高速に取得できます。キャッシュとは、指定された期間の値を複製し、Web リクエストを即座に処理するアプリケーションの機能です。

これらのテクニックは次の場合に効果的です。

  • サードパーティ API を呼び出す必要があり、呼び出し回数が発生する
  • クラウドとサーバー間のデータ転送のコスト
  • サーバーの応答は、同時リクエストに基づいて重要です。

Redis キャッシュとは何ですか?

Redis などの集中分散システムに保存されるデータ キャッシュ。 Redis はデータ構造サーバーとも呼ばれます。これは、さまざまなプロセスが、読み込み時間をかけずに同時にデータのクエリと変更を実行できることを意味します。

Redis の利点

データ構造の特別なプロパティは次のとおりです。

  • データは頻繁にリクエスト、提供、変更されますが、データは RAM に保存されるのではなく、ディスクに保存されます。
  • 高級プログラミング言語とは異なり、実装ではメモリの最適な使用量が強調されます。
  • レプリケーション、耐久性レベル、クラスタリング、高可用性(HA)などの機能も提供します。
  • Redis は、リスト、セット、順序付けされたデータセットなどの複雑な Memcached 操作を処理できます

ローカル システムでの Redis クライアントの使用

Redis を使用するには、ローカル システムに Node JS Redis クライアントをインストールする必要があります。 msi ファイル (この記事の公開日時点では v3.0.504 安定バージョン) を Github からダウンロードし、通常のインストール プロセス (Windows OS の場合) に進むことができます。

最新の Redis クライアントは、Windows Subsystem for Linux (WSL) とともにインストールして、Redis 6.x バージョンをインストールすることもできます。また、Docker 化については、Mac および Linux OS のダウンロードの手順に従ってください。

次のコマンドで Redis クライアントを実行します。

redis-server

Express.js 用の Redis キャッシュの構築:ステップバイステップ ガイド

Express Node JS アプリケーションを作成する

PowerShell または cmd プロンプト ウィンドウを開き、目的のフォルダーに移動します。

次のコマンドを実行します

npx express expressRedisCaching –hbs

Express.js 用の Redis キャッシュの構築:ステップバイステップ ガイド

コマンド

を使用してモジュールをインストールします。
npm i

そして、次の追加パッケージをインストールします

npm i redis
npm i isomorphic-fetch

すべてのパッケージがインストールされ、開始する準備ができたら。 「getCached.js」という新しいルート ページを作成しました。 」を作成し、「App.js」にマッピングしました。 」ページ。

app.use('/getCached', require('./routes/getCached'));

エンドポイントを呼び出すと、ロジックは JSON プレースホルダー (モック API) サイトから応答を取得し、データを Redis Cache に保存して、要求に応答することです。さらにリクエストがあれば、キャッシュされたデータが提供されます。

const express = require('express')
require('isomorphic-fetch')
const redis = require('redis')
const router = express.Router()
const client = redis.createClient({
    host:'127.0.0.1',
    port:6379
})
let sourceURL = 'https://jsonplaceholder.typicode.com/todos';
router.get('/',async(req, res)=>{  
        await client.connect();
        const value = await client.get('todos');
        if(value){
            console.log("from cached data")
            res.send(JSON.parse(value))
        }
        else{
            const resp = await fetch(sourceURL)
               .then((response) => response.json());
            await client.set('todos', JSON.stringify(resp));
            console.log("from source data")
            res.send(resp);
        }
        await client.disconnect();
})
module.exports = router

Redis を使用して作成されたオブジェクトは

です。
redis.createClient({ host:’127.0.0.1’, port:6379});

オプションあり

ホスト :現在、Redis はローカル システムで利用できるため、ホストはデフォルトの 127.0.0.1 です。

ポート :デフォルトでは、Windows OS は 6379 ポートを Redis に割り当てますが、同じようにカスタマイズできます。

次は、コマンドを実行してアプリを実行します。

npm start

Express.js 用の Redis キャッシュの構築:ステップバイステップ ガイド

Express.js 用の Redis キャッシュの構築:ステップバイステップ ガイド

最初のヒットで、データは約 1156 ミリ秒の応答時間でソース API からフェッチされ、同じデータがメモリ内のデータ ストア Redis Cache に保存されます。 2 番目のヒットでは、キャッシュされたデータからデータが取得され、フェッチ時間がわずか約 10 ミリ秒、さらには最大約 6 ミリ秒という大幅な短縮になります。

したがって、非常に少ない簡単な手順で目的を達成できます。


  1. 新しいプランにより、AWSのRedisEnterpriseCloudのシンプルさと柔軟性が向上します

    AWSのお客様は、簡素化された統合請求書、EDP消費にカウントされる支出、および柔軟なオンデマンド価格設定により、AWSでRedisEnterpriseCloudを調達できるようになりました。 これを可能にするために、RedisとAWSのパートナーシップの次のステップであるRedis Enterprise Cloudの一般提供–AWSマーケットプレイスでの柔軟なプランを共有できることをうれしく思います。 これは、高性能アプリケーションを構築および実行する際に、共同顧客に最新の購入体験と柔軟な価格設定オプションを提供するというRedisとAWSの間のコミットメントのレベルを示しています。コ

  2. 継続的な予測精度の確保:Redis を使用した Docker 化された時系列モデルの状態の永続化

    売上や株価を予測できる素晴らしい時系列モデルを構築したものの、現実の世界でそれが失敗するのを見たことはありませんか?まあ、これはよくある不満です。モデルはマシン上で完璧に動作しますが、Docker コンテナーにデプロイした瞬間に記憶喪失になったようです。昨日知っていたことはすべて忘れてしまい、明日の予測は役に立たなくなります。 心配しないでください。これはモデルの欠陥ではない可能性があります。これは、時系列モデルと Docker コンテナが動作するように設計されている方法の間の衝突です。 時系列モデルはすべてメモリに関係します。未来を予測するには過去を思い出す必要があります。しかし、Doc