Kushughulikia Hitilafu na Utatuzi wa Matatizo Redis katika Node.js

Kutatua na kushughulikia hitilafu katika NodeJS programu wakati wa kuunganishwa na Redis ni mchakato muhimu ili kuhakikisha uthabiti na ufanisi wa programu.

Ifuatayo ni baadhi ya maelezo na mifano ya jinsi ya kutatua matatizo na kushughulikia makosa wakati wa kufanya kazi nayo Redis katika NodeJS programu.

Tazama Redis log

Redis hutoa kumbukumbu kurekodi matukio muhimu, maonyo, na makosa. Kumbukumbu hizi zinaweza kuwa muhimu kwa matatizo ya utatuzi na Redis. Ili kuwezesha kuingia Redis, unahitaji kurekebisha redis.conf faili ya usanidi na kuweka kiwango sahihi cha kumbukumbu.

Hapa kuna mfano wa kuwezesha kuingia kwa faili:

# In redis.conf  
logfile /var/log/redis/redis.log  
loglevel verbose  

Hakikisha kuwa log saraka ya faili iko na inaweza kuandikwa na Redis mchakato.

Tumia Redis Monitor

Redis Monitor ni amri iliyojengewa ndani inayokuruhusu kufuatilia Redis amri za wakati halisi zinazotekelezwa kwenye seva. Inasaidia kuelewa amri halisi zinazotumwa kwa Redis.

Hapa kuna mfano wa kutumia Redis Monitor na maktaba ya "ioredis" katika NodeJS programu:

const Redis = require('ioredis');  
const redis = new Redis();  
  
redis.monitor((err, monitor) => {  
  console.log('Started monitoring Redis commands');  
  monitor.on('monitor',(time, args, source, database) => {  
    console.log('Command:', args);  
  });  
});  

Msimbo huu huweka Redis kifuatiliaji ambacho huchapisha kila Redis amri inayopokelewa na seva kwa wakati halisi.

Kushughulikia makosa asynchronous

Wakati wa kufanya kazi na Redis katika NodeJS programu, shughuli nyingi Redis ni za asynchronous, kumaanisha kuwa hutumia callback au Promises.

Kushughulikia hitilafu ipasavyo ni muhimu ili kuepuka mivurugiko ya programu. Hapa kuna mfano wa kushughulikia makosa na callback:

const Redis = require('ioredis');  
const redis = new Redis();  
  
redis.get('key',(err, result) => {  
  if(err) {  
    console.error('Error:', err);  
    return;  
  }  
  console.log('Result:', result);  
});  

Na kutumia async/await na Promises:

const Redis = require('ioredis');  
const redis = new Redis();  
  
async function getValue() {  
  try {  
    const result = await redis.get('key');  
    console.log('Result:', result);  
  } catch(err) {  
    console.error('Error:', err);  
  }  
}  
  
getValue();  

Dhibiti Redis miunganisho

Ili kudhibiti Redis miunganisho, inashauriwa kutumia hifadhi ya miunganisho iliyotolewa na Redis maktaba ya mteja. Kwa mfano, na "ioredis":

const Redis = require('ioredis');  
const redis = new Redis({  
  // connection options here  
});  

Mteja atadhibiti miunganisho kiotomatiki na kuitumia tena kwa ufanisi.

Shughulikia kesi wakati Redis haipatikani

Ili kushughulikia kesi wakati Redis haipatikani au kujibu polepole, zingatia kuweka muda unaofaa wa kuisha na kushughulikia hitilafu za muunganisho kwa uzuri.

const Redis = require('ioredis');  
const redis = new Redis({  
  retryStrategy:(times) => {  
    return Math.min(times * 50, 2000); // Retry with exponential backoff up to 2 seconds  
  },  
});  

Tumia Redis Sentinel

Redis Sentinel hutoa upatikanaji wa juu na ufuatiliaji kwa Redis makundi. Hushughulikia kiotomatiki kushindwa wakati nodi kuu haipatikani.

Hapa kuna usanidi wa mfano:

sentinel monitor mymaster 127.0.0.1 6379 2  
sentinel down-after-milliseconds mymaster 5000  
sentinel failover-timeout my  

Mipangilio iliyo hapo juu inasanidi a Redis Sentinel inayofuatilia Redis bwana na kizingiti cha chini-baada ya milisekunde cha 5000ms, muda wa kutofaulu wa 10000ms, na usawazishaji 1 sambamba.

 

Kwa kufuata hatua na mifano hii, unaweza kutatua na kushughulikia hitilafu kwa ufanisi wakati wa kufanya kazi na Redis programu NodeJS, kuhakikisha uaminifu na utendakazi wa programu yako.