Client Redis pour TypeScript : ioredis et redis (node-redis)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client Redis pour TypeScript : ioredis et redis (node-redis)

\n\n

Dans le monde des applications web modernes et des microservices, Redis est l'un des magasins de données en mémoire les plus populaires. Il est utilisé pour la mise en cache, la gestion des sessions, les files d'attente de tâches, Pub/Sub et bien plus encore. Si vous développez en TypeScript, vous aurez besoin d'un client fiable pour interagir avec Redis. Dans cet article, nous examinerons deux options principales : ioredis et redis (également connu sous le nom de node-redis). Les deux bibliothèques offrent un excellent support TypeScript, sont activement maintenues et fournissent un large éventail de fonctionnalités.

\n\n

Pourquoi un client Redis pour TypeScript ?

\n

TypeScript ajoute un typage statique à JavaScript, rendant le code plus prévisible et réduisant le nombre d'erreurs au stade du développement. Un client Redis pour TypeScript permet :

\n
    \n
  • De travailler avec les commandes Redis avec une prise en charge complète des types.
  • \n
  • D'utiliser l'autocomplétion dans l'IDE (IntelliSense).
  • \n
  • De s'intégrer facilement avec les frameworks modernes (NestJS, Express, Koa).
  • \n
  • De simplifier la gestion des erreurs et les reconnexions.
  • \n
\n\n

Bibliothèque ioredis

\n

ioredis est un client Redis complet qui a longtemps été la norme de facto dans l'écosystème Node.js. Il prend en charge le clustering, Pub/Sub, le pipelining, les transactions (MULTI/EXEC), la reconnexion automatique et bien plus encore. ioredis est écrit en TypeScript et fournit des types prêts à l'emploi.

\n\n

Installation

\n
npm install ioredis\nnpm install @types/ioredis # si vous utilisez TypeScript < 4.0
\n\n

Exemple de connexion et d'opérations de base

\n
import Redis from 'ioredis';\n\n// Création d'une connexion à Redis (par défaut localhost:6379)\nconst redis = new Redis();\n\n// Fonction asynchrone pour la démonstration\nasync function demo() {\n  try {\n    // Définition d'une valeur\n    await redis.set('user:1:name', 'Anna');\n    await redis.set('user:1:age', 30);\n\n    // Récupération d'une valeur\n    const name = await redis.get('user:1:name');\n    console.log('Nom d\'utilisateur :', name);\n\n    // Travail avec les hachages\n    await redis.hset('user:2', 'name', 'Ivan', 'age', 25);\n    const user2 = await redis.hgetall('user:2');\n    console.log('Utilisateur 2 :', user2);\n\n    // Incrémentation\n    const views = await redis.incr('page:home:views');\n    console.log('Vues de la page :', views);\n\n    // Définition avec expiration (TTL)\n    await redis.setex('temp:code', 60, '123456');\n    const ttl = await redis.ttl('temp:code');\n    console.log('Temps de vie restant de la clé :', ttl, 'sec');\n\n  } catch (error) {\n    console.error('Erreur Redis :', error);\n  } finally {\n    // Fermeture de la connexion\n    redis.disconnect();\n  }\n}\n\ndemo();
\n\n

Prise en charge des clusters et Pub/Sub

\n

ioredis fonctionne parfaitement avec les clusters Redis. Pour cela, on utilise la classe spéciale Cluster :

\n
import Redis from 'ioredis';\n\nconst cluster = new Redis.Cluster([\n  { host: '127.0.0.1', port: 7000 },\n  { host: '127.0.0.1', port: 7001 },\n  { host: '127.0.0.1', port: 7002 }\n]);\n\nawait cluster.set('foo', 'bar');\nconst value = await cluster.get('foo');\nconsole.log(value); // 'bar'
\n\n

Pour Pub/Sub, une connexion séparée est utilisée, car un abonné ne peut pas exécuter de commandes normales :

\n
import Redis from 'ioredis';\n\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\npublisher.publish('news', 'Bonjour depuis TypeScript !');
\n\n

Bibliothèque redis (node-redis)

\n

redis (paquet redis sur n

Recommendations