Maison > base de données > Redis > le corps du texte

Comment utiliser Redis et TypeScript pour développer des fonctions de défense contre la pénétration du cache

WBOY
Libérer: 2023-09-21 16:34:53
original
1166 Les gens l'ont consulté

Comment utiliser Redis et TypeScript pour développer des fonctions de défense contre la pénétration du cache

Comment utiliser Redis et TypeScript pour développer la fonction de défense contre la pénétration du cache

La pénétration du cache signifie que lorsque l'utilisateur interroge une donnée inexistante, car il n'y a pas de données correspondantes dans le cache, la base de données sera directement accessible à chaque fois , provoquant une pression excessive sur la base de données. Afin de résoudre ce problème, nous pouvons utiliser Redis et TypeScript pour développer des fonctions de défense contre la pénétration du cache.

1. Installer et configurer Redis

Tout d'abord, nous devons installer Redis et le configurer. Sur les systèmes Ubuntu, Redis peut être installé via la commande suivante :

sudo apt-get install redis-server
Copier après la connexion

Une fois l'installation terminée, Redis s'exécutera en mode local et écoutera le port par défaut 6379 par défaut. Ensuite, nous devons configurer certains paramètres de Redis à utiliser.

Dans le fichier de configuration de Redis, recherchez la configuration suivante et décommentez-la :

# bind 127.0.0.1 ::1
Copier après la connexion

Modifiez-la en :

bind 0.0.0.0
Copier après la connexion

De cette façon, Redis pourra écouter sur des adresses IP autres que locales.

Enregistrez et quittez le fichier de configuration, puis redémarrez le service Redis :

sudo service redis-server restart
Copier après la connexion

2. Installez et configurez TypeScript

Ensuite, nous devons installer et configurer TypeScript. Tout d’abord, assurez-vous que Node.js et npm sont installés.

Ensuite, installez TypeScript globalement avec la commande suivante :

npm install -g typescript
Copier après la connexion

Créez un nouveau projet TypeScript et initialisez npm :

mkdir cache-protection
cd cache-protection
npm init -y
Copier après la connexion

Installez les dépendances TypeScript nécessaires :

npm install redis ioredis express
npm install --save-dev @types/redis @types/ioredis @types/express
Copier après la connexion

3. Écrivez le code

Ensuite, nous commençons à écrire le cache Code pour pénétrer les fonctions de défense. Tout d’abord, créez un fichier nommé index.ts dans le répertoire racine du projet.

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');
});
Copier après la connexion

Description du code :

  1. Importez d'abord les bibliothèques requises, notamment express, redis et ioredis.
  2. Créez une instance express et créez une instance Redis.
  3. Implémente trois fonctions de base : obtenir des données du cache, obtenir des données de la base de données et écrire des données dans le cache.
  4. Rédaction d'une fonction de traitement de routage Express pour recevoir les demandes et renvoyer les données correspondantes.
  5. Démarrez le service Express et écoutez sur le port 3000.

4. Exécutez le code

Dans la ligne de commande, utilisez la commande suivante pour compiler le code TypeScript en JavaScript :

tsc index.ts
Copier après la connexion

Ensuite, exécutez le code JavaScript compilé :

node index.js
Copier après la connexion

Maintenant, vous pouvez y accéder en visitant http ://localhost :3000/data/1 pour tester la fonction de défense contre la pénétration du cache. Le premier accès récupérera les données de la base de données et les écrira dans le cache. Accéder à nouveau à la même URL récupérera les données directement à partir du cache.

Résumé :

Cet article explique comment utiliser Redis et TypeScript pour développer des fonctions de défense contre la pénétration du cache. Grâce à la combinaison des fonctions de requête de cache, des fonctions de requête de données de la base de données et des fonctions de cache d'écriture de données, nous pouvons réduire efficacement l'accès à la base de données et améliorer les performances du système. Dans le même temps, les fonctionnalités de lecture et d'écriture à grande vitesse de Redis peuvent mieux faire face aux situations d'accès simultané élevé.

J'espère que cet article pourra être utile pour votre travail de développement !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!