Redis と TypeScript を使用してキャッシュ侵入防御機能を開発する方法
キャッシュ侵入とは、対応するデータがないためにユーザーが存在しないデータをクエリした場合を指します。キャッシュ内のデータは毎回データベースに直接アクセスするため、データベースに過剰な負荷がかかります。この問題を解決するには、Redis と TypeScript を使用してキャッシュ侵入防御機能を開発します。
1. Redis のインストールと構成
まず、Redis をインストールして構成する必要があります。 Ubuntu システムでは、次のコマンドを使用して Redis をインストールできます:
sudo apt-get install redis-server
インストールが完了すると、Redis はローカル モードで実行され、デフォルトでデフォルト ポート 6379 をリッスンします。次に、使用する Redis のいくつかのパラメーターを構成する必要があります。
Redis 構成ファイルで、次の構成を見つけてコメントを外します:
# bind 127.0.0.1 ::1
これを次のように変更します:
bind 0.0.0.0
これにより、Redis は IP 上で実行できるようになります。ローカル モニター以外のアドレス。
構成ファイルを保存して終了し、Redis サービスを再起動します:
sudo service redis-server restart
2. TypeScript のインストールと構成
次に、TypeScript をインストールして構成する必要があります。まず、Node.js と npm がインストールされていることを確認します。
次に、次のコマンドを使用して TypeScript をグローバルにインストールします:
npm install -g typescript
新しい TypeScript プロジェクトを作成し、npm を初期化します:
mkdir cache-protection cd cache-protection npm init -y
必要な TypeScript の依存関係をインストールします:
npm install redis ioredis express npm install --save-dev @types/redis @types/ioredis @types/express
3. コードの記述
##次に、キャッシュ侵入防御機能のコードの記述を開始します。まず、プロジェクトのルート ディレクトリに、index.ts という名前のファイルを作成します。import express, { Request, Response } from 'express'; import Redis from 'ioredis'; const app = express(); const redis = new Redis(); // 缓存查询的函数 async function getDataFromCache(key: string): Promise<string | null> { return await redis.get(key); } // 从数据库查询数据的函数 async function getDataFromDb(key: string): Promise<string | undefined> { // 模拟从数据库查询的过程 const dataFromDb = { '1': 'data1', '2': 'data2', '3': 'data3', }; return dataFromDb[key]; } // 将数据写入缓存的函数 async function setDataToCache(key: string, data: string): Promise<string> { return await redis.set(key, data); } // Express路由处理函数 app.get('/data/:id', async (req: Request, res: Response) => { const dataId = req.params.id; const cacheKey = `data:${dataId}`; // 尝试从缓存中获取数据 let data = await getDataFromCache(cacheKey); // 如果缓存中没有数据,则从数据库中查询并写入缓存 if (!data) { data = await getDataFromDb(dataId); if (data) { await setDataToCache(cacheKey, data); } } // 返回结果 if (data) { res.send(data); } else { res.send('Data not found'); } }); // 启动Express服务 app.listen(3000, () => { console.log('Server is running on port 3000'); });コードの説明:
tsc index.ts次に、コンパイルされた JavaScript を実行します。コード:
node index.jsこれで、http://localhost:3000/data/1 にアクセスして、キャッシュ侵入防御機能をテストできます。最初のアクセスでは、データベースからデータが取得され、そのデータがキャッシュに書き込まれます。同じ URL に再度アクセスすると、キャッシュからデータが直接取得されます。 概要: この記事では、Redis と TypeScript を使用してキャッシュ侵入防御機能を開発する方法を紹介します。キャッシュクエリ機能、データベースからのデータクエリ機能、データ書き込みキャッシュ機能を組み合わせることで、データベースへのアクセスを効果的に削減し、システムのパフォーマンスを向上させることができます。同時に、Redis の高速読み取りおよび書き込み機能により、同時アクセスが多い状況にも適切に対処できます。 この記事があなたの開発作業に役立つことを願っています。
以上がRedis と TypeScript を使用してキャッシュ侵入防御機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。