Client Redis pour Node.js : ioredis — un outil puissant pour travailler avec 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 Node.js : ioredis



Redis est un magasin de données en mémoire hautes performances, souvent utilisé comme base de données, cache et courtier de messages. Pour interagir avec Redis depuis Node.js, il existe plusieurs bibliothèques, mais l'une des plus populaires et fonctionnelles est ioredis. Cette bibliothèque fournit une API complète, performante et pratique pour travailler avec Redis, prenant en charge toutes les fonctionnalités modernes, y compris le clustering, le pub/sub, les transactions et les scripts Lua.



Dans cet article, nous allons examiner en détail ioredis, son installation, ses principales fonctionnalités et fournir des exemples pratiques de code en JavaScript (Node.js).



Installation et connexion



L'installation d'ioredis via npm ou yarn est simple :



npm install ioredis# ouyarn add ioredis


Après l'installation, créez une instance du client :



const Redis = require('ioredis');const redis = new Redis(); // par défaut localhost:6379

// Ou avec des paramètres explicitesconst redis = new Redis({ host: 'localhost', port: 6379, password: 'your_password', // si un mot de passe est défini db: 0});


La bibliothèque prend en charge Promise et async/await, ce qui rend le code propre et lisible.



Opérations de base avec les données



ioredis permet d'exécuter toutes les commandes Redis standard. Examinons des exemples de travail avec les chaînes, les listes et les hachages.



Travail avec les chaînes



async function stringExample() {  await redis.set('user:1:name', 'Алексей');  const name = await redis.get('user:1:name');  console.log(name); // Алексей

// Définition avec expiration (TTL) await redis.setex('temp:code', 60, '123456'); // vit 60 secondes}


Travail avec les listes



async function listExample() {  await redis.lpush('queue:tasks', 'task1', 'task2');  await redis.rpush('queue:tasks', 'task3');  const tasks = await redis.lrange('queue:tasks', 0, -1);  console.log(tasks); // ['task2', 'task1', 'task3']}


Travail avec les hachages



async function hashExample() {  await redis.hset('user:1', {    name: 'Мария',    age: 28,    city: 'Москва'  });  const age = await redis.hget('user:1', 'age');  console.log(age); // 28

const allData = await redis.hgetall('user:1'); console.log(allData); // { name: 'Мария', age: '28', city: 'Москва' }}


Pub/Sub (éditeur-abonné)



Redis prend en charge le modèle pub/sub, et ioredis fournit une interface pratique pour cela. Important : l'abonné doit utiliser une connexion séparée.



// Abonnéconst subscriber = new Redis();subscriber.subscribe('news', 'updates', (err, count) => {  console.log(`Abonné à ${count} canaux`);});

subscriber.on('message', (channel, message) => { console.log(`Reçu de ${channel} : ${message}`);});

// Éditeur (peut être dans un autre processus)const publisher = new Redis();publisher.publish('news', 'Bonjour le monde !');publisher.publish('updates', 'Version 2.0 publiée');


Travail avec un cluster Redis



ioredis prend parfaitement en charge le clustering. Il vous suffit de transmettre la liste des nœuds du cluster :



const cluster = new Redis.Cluster([  { host: 'node1.example.com', port: 6379 },  { host: 'node2.example.com', port: 6379 },  { host: 'node3.example.com', port: 6379 }]);

async function clusterExample() { await cluster.set('key', 'value'); const val = await cluster.get('key'); console.log(val); // value}


La bibliothèque gère automatiquement la redirection des commandes entre les nœuds (MOVED, ASK) et prend en charge les slots.



Transactions et pipelines



Pour exécuter atomiquement plusieurs commandes, utilisez les transactions (MULTI/EXEC). Pour améliorer les performances, utilisez les pipelines.



Transactions



async function transaction                    

Recommendations