Maison interface Web Questions et réponses frontales Comment nodejs utilise la mise en cache

Comment nodejs utilise la mise en cache

May 14, 2023 am 11:01 AM

Avec le développement d'Internet, les applications réseaux deviennent de plus en plus complexes, et les demandes d'accès se multiplient. Afin d'améliorer les performances des applications, la mise en cache est devenue une option importante et Node.js, en tant que langage JavaScript rapide côté serveur, prend également en charge plusieurs façons d'utiliser la mise en cache. Cet article présentera comment Node.js utilise la mise en cache pour améliorer les performances des applications.

1. Principes de base de la mise en cache

Le cache peut enregistrer certaines données fréquemment utilisées en mémoire ou sur le disque. Lorsque les données doivent être utilisées, elles peuvent être obtenues directement à partir du cache, réduisant ainsi le temps de chaque requête et améliorant la réponse du système. vitesse. Les caches stockent généralement les données sous la forme de paires clé-valeur, où les clés peuvent être n'importe quel type de données et les valeurs peuvent être des chaînes, des nombres, des objets JavaScript ou d'autres types de données.

Dans Node.js, nous pouvons utiliser le module principal cache pour créer notre propre cache. Ce module fournit les méthodes suivantes : cache来创建我们自己的缓存。该模块提供了以下方法:

  • cache.get(key): 获取指定键值对应的数据。
  • cache.set(key, value, ttl): 将指定的值存储到缓存中,使用指定的键作为标识符。ttl表示存活时间(英文为Time To Live),即在该时间内,数据能够从缓存中被访问到。
  • cache.del(key): 删除指定键值对应的数据。
  • cache.clear(): 清空所有缓存。

需要注意的是,使用Node.js内置的缓存模块缓存的数据只能在当前的进程中共享,不能实现进程间的共享。如果需要实现进程间的共享,可以使用第三方的缓存模块,例如Memcached或Redis。

二、使用Node.js内置缓存模块

在实际开发中,我们可以使用Node.js内置的cache模块来实现缓存数据。下面是一个简单的例子:

const cache = require('cache');
let data = null;

if (cache.get('data')) {
  data = cache.get('data');
} else {
  // 数据库查询操作
  data = db.query('SELECT * FROM users');
  // 将数据存储到缓存中,使用'users'作为键,存活时间为1小时
  cache.set('users', data, 3600);
}

// 使用data数据
Copier après la connexion

在上面的例子中,我们首先尝试从缓存中获取数据,如果找到了相应的键,则直接使用缓存中的数据。如果没有找到,则查询数据库,并将查询到的数据存储到缓存中,以减少数据库查询的次数。该数据的存活时间为1小时,过期后需要重新查询数据库,并更新缓存中的数据。

三、使用Redis缓存

除了使用Node.js内置的缓存模块,我们还可以使用第三方的缓存模块,例如Redis。Redis是一个基于内存的缓存数据库,可以实现互联网应用程序的高速缓存。下面是一个使用Redis缓存的例子:

const redis = require('redis');
const client = redis.createClient();

let data = null;
client.get('users', (err, result) => {
  if (result) {
    data = result;
  } else {
    // 数据库查询操作
    data = db.query('SELECT * FROM users');
    // 将数据存储到Redis中,使用'users'作为键,存活时间为1小时
    client.setex('users', 3600, JSON.stringify(data));
  }
});

// 使用data数据
Copier après la connexion

在上面的例子中,我们使用了Redis的get方法来获取数据,如果找到了相应的键,则直接使用缓存中的数据。如果没有找到,则查询数据库,并将查询到的数据存储到Redis中,以减少数据库查询的次数。该数据的存活时间为1小时,过期后需要重新查询数据库,并更新Redis中的数据。

四、缓存失效处理

缓存的数据在存活时间内始终保持相同,但是当缓存的数据过期后,需要重新查询数据库,并更新缓存中的数据。为了确保数据的实时性,我们可以使用定时器来定时清理缓存中过期的数据。例如,每5分钟清理一次缓存:

setInterval(() => {
  cache.clear();
}, 300000);
Copier après la connexion

在上面的例子中,我们使用setInterval

cache.get(key) : Récupère les données correspondant à la valeur de clé spécifiée.

cache.set(key, value, ttl) : stocke la valeur spécifiée dans le cache, en utilisant la clé spécifiée comme identifiant. ttl représente le temps de vie (Time To Live en anglais), c'est-à-dire que pendant ce temps, les données sont accessibles depuis le cache.

    cache.del(key) : Supprimez les données correspondant à la valeur de clé spécifiée.
  1. cache.clear() : Effacez tous les caches.

Il convient de noter que les données mises en cache à l'aide du module de mise en cache intégré de Node.js ne peuvent être partagées qu'au sein du processus en cours et ne peuvent pas être partagées entre les processus. Si vous devez réaliser un partage inter-processus, vous pouvez utiliser un module de cache tiers, tel que Memcached ou Redis.
  • 2. Utilisez le module de cache intégré de Node.js
  • Dans le développement réel, nous pouvons utiliser le module cache intégré de Node.js pour mettre les données en cache. Voici un exemple simple :
  • rrreee
  • Dans l'exemple ci-dessus, on essaie d'abord d'extraire les données du cache, et si la clé correspondante est trouvée, on utilise directement les données du cache. Si elle n'est pas trouvée, la base de données est interrogée et les données interrogées sont stockées dans le cache pour réduire le nombre de requêtes sur la base de données. La durée de survie de ces données est d'une heure. Après expiration, vous devez réinterroger la base de données et mettre à jour les données dans le cache.
  • 3. Utiliser le cache Redis
En plus d'utiliser le module de mise en cache intégré de Node.js, nous pouvons également utiliser des modules de mise en cache tiers, tels que Redis. Redis est une base de données de cache basée sur la mémoire qui permet la mise en cache des applications Internet. Voici un exemple d'utilisation du cache Redis :

rrreee

Dans l'exemple ci-dessus, nous utilisons la méthode get de Redis pour obtenir des données. Si la clé correspondante est trouvée, les données du cache sont utilisées directement. . S'il n'est pas trouvé, interrogez la base de données et stockez les données interrogées dans Redis pour réduire le nombre de requêtes de base de données. La durée de survie de ces données est d'une heure. Après expiration, vous devez réinterroger la base de données et mettre à jour les données dans Redis.
  1. 4. Traitement d'invalidation du cache
Les données mises en cache restent toujours les mêmes pendant la durée de survie, mais lorsque les données mises en cache expirent, la base de données doit être réinterrogeée et les données dans le cache doivent être mises à jour. Afin de garantir la nature en temps réel des données, nous pouvons utiliser une minuterie pour effacer régulièrement les données expirées dans le cache. Par exemple, effacez le cache toutes les 5 minutes :

rrreee

Dans l'exemple ci-dessus, nous utilisons la méthode setInterval pour effacer régulièrement les données expirées dans le cache. L'intervalle de temps est de 5 minutes, c'est-à-dire toutes les 5 minutes. 5 minutes une fois. 🎜🎜5. Stratégies de mise en cache🎜🎜Certaines stratégies de mise en cache doivent être prises en compte lors de l'utilisation du cache pour améliorer les performances des applications. 🎜🎜🎜Stratégie d'élimination du cache🎜🎜🎜La stratégie d'élimination du cache signifie qu'une fois que le cache atteint une certaine taille ou que le temps de survie atteint une certaine période, certaines stratégies d'élimination doivent être adoptées pour nettoyer les données dans le cache. Les stratégies d'élimination courantes sont : 🎜🎜🎜FIFO (premier entré, premier sorti) : efface les données qui entrent en premier dans le cache. 🎜🎜LIFO (dernier entré, premier sorti) : effacez les dernières données entrées dans le cache. 🎜🎜LFU (Least Récemment Utilisé) : Nettoyez les données les moins utilisées. 🎜🎜LRU (Les moins récemment utilisées) : Effacez les données qui n'ont pas été utilisées depuis le plus longtemps. 🎜🎜🎜En développement réel, différentes stratégies d'élimination peuvent être adoptées selon des scénarios d'application spécifiques pour améliorer l'efficacité du cache. 🎜🎜🎜Stratégie de mise à jour du cache🎜🎜🎜La stratégie de mise à jour du cache fait référence à la façon de garantir que les données du cache sont synchronisées avec les données de la base de données lorsque les données de la base de données sont mises à jour. Les stratégies courantes de mise à jour du cache sont : 🎜
  • Cache-Aside : lorsque nous avons besoin de lire une donnée, nous la recherchons d'abord dans le cache, et la renvoyons directement si elle est trouvée. Sinon, nous l'interrogeons dans la base de données, stockons les données interrogées dans le cache, et renvoyez-le aux données. Lorsque nous devons mettre à jour les données, nous mettons d'abord à jour les données dans la base de données, puis supprimons les données du cache. Lorsque nous lirons à nouveau les données, nous les lirons à nouveau dans la base de données et mettrons à jour les données dans le cache.
  • Write-Through (cache en écriture) : lorsque nous devons insérer ou mettre à jour une donnée, nous mettons d'abord à jour les données dans la base de données, puis stockons les données dans le cache. Lorsque nous avons besoin de lire une donnée, nous la recherchons d'abord dans le cache et la renvoyons directement si elle est trouvée. Sinon, nous l'interrogeons dans la base de données, stockons les données interrogées dans le cache et renvoyons les données. Lorsque des données doivent être supprimées, nous supprimons d'abord les données de la base de données, puis supprimons les données du cache.

En développement réel, différentes stratégies de mise à jour du cache peuvent être adoptées selon des scénarios d'application spécifiques pour assurer la cohérence des données entre le cache et la base de données.

6. Résumé

La mise en cache est l'un des moyens importants pour améliorer les performances des applications. Dans Node.js, nous pouvons utiliser le module cache intégré pour implémenter la mise en cache, ou nous pouvons utiliser des modules de mise en cache tiers, tels que Redis. Lorsque vous utilisez le cache, vous devez envisager des stratégies d'élimination du cache et des stratégies de mise à jour du cache pour améliorer l'efficacité du cache et la cohérence des données. Même si la mise en cache peut améliorer les performances des applications, il existe également des coûts de sécurité et de gestion du cache dont il faut être conscient.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Apr 09, 2025 am 12:11 AM

React combine JSX et HTML pour améliorer l'expérience utilisateur. 1) JSX incorpore du HTML pour rendre le développement plus intuitif. 2) Le mécanisme DOM virtuel optimise les performances et réduit les opérations DOM. 3) Interface utilisateur de gestion basée sur les composants pour améliorer la maintenabilité. 4) La gestion des états et le traitement des événements améliorent l'interactivité.

React Composants: Création d'éléments réutilisables en HTML React Composants: Création d'éléments réutilisables en HTML Apr 08, 2025 pm 05:53 PM

Les composants React peuvent être définis par des fonctions ou des classes, encapsulant la logique de l'interface utilisateur et acceptant les données d'entrée via des accessoires. 1) Définissez les composants: utilisez des fonctions ou des classes pour retourner les éléments de réact. 2) Rendre le composant: React Cappel Render Method ou Exécute le composant de fonction. 3) Composants de multiplexage: passer des données à travers des accessoires pour construire une interface utilisateur complexe. L'approche du cycle de vie des composants permet d'exécuter la logique à différentes étapes, améliorant l'efficacité de développement et la maintenabilité du code.

Quelles sont les limites du système de réactivité de Vue 2 en ce qui concerne les changements de tableau et d'objets? Quelles sont les limites du système de réactivité de Vue 2 en ce qui concerne les changements de tableau et d'objets? Mar 25, 2025 pm 02:07 PM

Le système de réactivité de Vue 2 lutte avec le réglage de l'index de tableau direct, la modification de la longueur et l'ajout / suppression de la propriété de l'objet. Les développeurs peuvent utiliser les méthodes de mutation de Vue et Vue.set () pour assurer la réactivité.

React and the frontend: construire des expériences interactives React and the frontend: construire des expériences interactives Apr 11, 2025 am 12:02 AM

React est l'outil préféré pour construire des expériences frontales interactives. 1) Réagir simplifie le développement de l'interface utilisateur par la composontisation et le DOM virtuel. 2) Les composants sont divisés en composants de fonction et composants de classe. Les composants de fonction sont plus simples et les composants de la classe fournissent plus de méthodes de cycle de vie. 3) Le principe de travail de React repose sur le DOM virtuel et l'algorithme de réconciliation pour améliorer les performances. 4) La gestion de l'État utilise USESTATE ou This. State, et des méthodes de cycle de vie telles que ComponentDidMount sont utilisées pour une logique spécifique. 5) L'utilisation de base comprend la création de composants et la gestion de l'état, et l'utilisation avancée implique des crochets personnalisés et une optimisation des performances. 6) Les erreurs courantes incluent les mises à jour de statut et les problèmes de performance inappropriés, les compétences de débogage comprennent l'utilisation de Reactdevtools et d'excellents

Quels sont les avantages de l'utilisation de TypeScript avec React? Quels sont les avantages de l'utilisation de TypeScript avec React? Mar 27, 2025 pm 05:43 PM

TypeScript améliore le développement de React en offrant la sécurité du type, en améliorant la qualité du code et en offrant un meilleur support IDE, réduisant ainsi les erreurs et améliorant la maintenabilité.

Comment pouvez-vous utiliser UserReducer pour une gestion complexe de l'état? Comment pouvez-vous utiliser UserReducer pour une gestion complexe de l'état? Mar 26, 2025 pm 06:29 PM

L'article explique l'utilisation d'un userReducer pour une gestion complexe de l'état dans React, détaillant ses avantages sur UseState et comment l'intégrer avec l'utilisation d'effet pour les effets secondaires.

Que sont les composants fonctionnels dans vue.js? Quand sont-ils utiles? Que sont les composants fonctionnels dans vue.js? Quand sont-ils utiles? Mar 25, 2025 pm 01:54 PM

Les composants fonctionnels de Vue.js sont apatrides, légers et manquent de crochets de cycle de vie, idéaux pour rendre les données pures et optimiser les performances. Ils diffèrent des composants avec état en n'ayant pas d'état ou de réactivité, en utilisant directement les fonctions de rendu, un

Comment vous assurez-vous que vos composants React sont accessibles? Quels outils pouvez-vous utiliser? Comment vous assurez-vous que vos composants React sont accessibles? Quels outils pouvez-vous utiliser? Mar 27, 2025 pm 05:41 PM

L'article traite des stratégies et des outils pour garantir que les composants React sont accessibles, en se concentrant sur le HTML sémantique, les attributs Aria, la navigation par clavier et le contraste des couleurs. Il recommande d'utiliser des outils comme Eslint-Plugin-JSX-A11Y et Axe-Core pour Testi

See all articles