Client Redis pour JavaScript (Node.js) — ioredis
\n\nRedis est un magasin de données clé-valeur hautes performances, souvent utilisé pour la mise en cache, la gestion des sessions, les files d'attente de messages et les systèmes Pub/Sub. Pour travailler avec Redis depuis Node.js, il existe plusieurs bibliothèques, mais l'une des plus puissantes et populaires est ioredis. Cette bibliothèque est conçue pour les applications modernes nécessitant des performances élevées, la prise en charge du clustering, des transactions et du traitement de flux de données.
\n\nQu'est-ce que ioredis ?
\nioredis est un client Redis complet pour Node.js, écrit en JavaScript. Il prend en charge toutes les fonctionnalités de Redis, y compris le clustering, les modes Sentinel, le pipelining, les transactions (MULTI/EXEC), les scripts Lua, Pub/Sub, ainsi que le travail avec des structures de type MapReduce. La bibliothèque est activement développée et utilisée en production par de nombreuses entreprises.
\n\nInstallation de ioredis
\nL'installation se fait via npm :
\nnpm install ioredis\nAprès l'installation, vous pouvez vous connecter à un serveur Redis :
\nconst Redis = require('ioredis');\nconst redis = new Redis(); // par défaut localhost:6379\n\nFonctionnalités principales de ioredis
\n- \n
- Simplicité d'utilisation — API intuitive, similaire aux commandes Redis. \n
- Prise en charge de Promise et async/await — toutes les opérations asynchrones retournent des promesses. \n
- Clustering — répartition automatique des requêtes entre les nœuds du cluster. \n
- Sentinel — basculement automatique vers un serveur de secours en cas de panne. \n
- Pipelining — envoi de plusieurs commandes en une seule requête pour améliorer les performances. \n
- Pub/Sub — abonnement aux canaux et échange de messages en temps réel. \n
- Prise en charge des scripts Lua — exécution d'opérations atomiques côté serveur. \n
- Surveillance et événements — suivi de l'état de la connexion et des erreurs. \n
Exemples d'utilisation de ioredis
\n\nOpérations de base avec les clés
\nExemple de définition et d'obtention d'une valeur :
\nconst Redis = require('ioredis');\nconst redis = new Redis();\n\nasync function basicExample() {\n await redis.set('user:1', 'Alice');\n const value = await redis.get('user:1');\n console.log(value); // Alice\n}\nbasicExample();\n\nTravail avec les hachages
\nLes hachages permettent de stocker plusieurs champs sous une même clé :
\nasync function hashExample() {\n await redis.hset('user:2', 'name', 'Bob', 'age', 30);\n const name = await redis.hget('user:2', 'name');\n console.log(name); // Bob\n}\nhashExample();\n\nPipelining
\nLe pipelining accélère considérablement l'exécution de multiples commandes :
\nasync function pipelineExample() {\n const pipeline = redis.pipeline();\n pipeline.set('key1', 'value1');\n pipeline.set('key2', 'value2');\n pipeline.get('key1');\n const results = await pipeline.exec();\n console.log(results); // tableau des résultats\n}\npipelineExample();\n\nPub/Sub (Éditeur-Abonné)
\nExemple d'abonnement à un canal et d'envoi d'un message :
\nconst subscriber = new Redis();\nconst publisher = new Redis();\n\nsubscriber.subscribe('news', (err, count) => {\n console.log(`Abonné à ${count} canal(aux)`);\n});\n\nsubscriber.on('message', (channel, message) => {\n console.log(`Message reçu du canal ${channel} : ${message}`);\n});\n\n// Publication d'un message\nasync function publishMessage() {\n await publisher.publish('news', 'Bonjour le monde !');\n}\npublishMessage();\n\nTravail avec un cluster Redis
\nPour se connecter à un cluster, utilisez Redis.Cluster :
const Redis = Aussi dans la bibliothèque
Envoi d'email en TypeScript : bibliothèques et exemples de code
Autorisation et authentification en C# (.NET) — guide complet
Journalisation pour Swift : bibliothèque SwiftyBeaver
Traitement d'images en C++ : redimensionnement et recadrage avec la bibliothèque OpenCV
CORS JavaScript (Node.js) : guide complet avec exemples