Redis Node.js میں خرابیوں اور ٹربل شوٹنگ کو ہینڈل کرنا

NodeJS ایپلی کیشن کے ساتھ انضمام کے دوران خرابیوں کا سراغ لگانا اور ان سے نمٹنا Redis درخواست کے استحکام اور کارکردگی کو یقینی بنانے کے لیے ایک ضروری عمل ہے۔

Redis ذیل میں کچھ تفصیلات اور مثالیں دی گئی ہیں کہ کسی NodeJS ایپلیکیشن کے ساتھ کام کرتے وقت خرابیوں کا سراغ لگانا اور غلطی سے نمٹنے کا طریقہ ۔

دیکھیں Redis log

Redis اہم واقعات، انتباہات، اور غلطیوں کو ریکارڈ کرنے کے لیے لاگز فراہم کرتا ہے۔ یہ نوشتہ جات کے ساتھ مسائل کے حل کے لیے کارآمد ہو سکتے ہیں Redis ۔ لاگ ان کو فعال کرنے کے لیے Redis ، آپ کو redis.conf کنفیگریشن فائل میں ترمیم کرنے اور لاگنگ کی مناسب سطح کو سیٹ کرنے کی ضرورت ہے۔

فائل میں لاگنگ کو فعال کرنے کی ایک مثال یہ ہے:

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

یقینی بنائیں کہ log فائل ڈائرکٹری موجود ہے اور Redis عمل کے ذریعہ قابل تحریر ہے۔

استعمال کریں۔ Redis Monitor

Redis Monitor Redis ایک بلٹ ان کمانڈ ہے جو آپ کو سرور پر عمل میں آنے والی ریئل ٹائم کمانڈز کی نگرانی کرنے کی اجازت دیتی ہے ۔ یہ اصل کمانڈز کو سمجھنے کے لیے مددگار ہے جو Redis.

Redis Monitor ایپلی کیشن میں "ioredis" لائبریری کے ساتھ استعمال کرنے کی ایک مثال یہ ہے NodeJS:

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);  
  });  
});  

یہ کوڈ ایک مانیٹر ترتیب دیتا ہے Redis جو Redis سرور کو موصول ہونے والی ہر کمانڈ کو ریئل ٹائم میں پرنٹ کرتا ہے۔

غیر مطابقت پذیر غلطیوں کو ہینڈل کریں۔

Redis کسی ایپلیکیشن کے ساتھ کام کرتے وقت NodeJS ، بہت سے Redis آپریشنز غیر مطابقت پذیر ہوتے ہیں، یعنی وہ استعمال کرتے ہیں callback یا Promises ۔

ایپلی کیشن کریش سے بچنے کے لیے غلطیوں کو درست طریقے سے ہینڈل کرنا بہت ضروری ہے۔ یہاں غلطیوں سے نمٹنے کی ایک مثال ہے 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);  
});  

اور async/await اس کے ساتھ استعمال کرتے ہوئے 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();  

Redis رابطوں کا انتظام کریں۔

کنکشنز کو منظم کرنے کے لیے ، کلائنٹ لائبریری Redis کی طرف سے فراہم کردہ کنکشن پول استعمال کرنے کی سفارش کی جاتی ہے ۔ Redis مثال کے طور پر، "ioredis" کے ساتھ:

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

کلائنٹ خود کار طریقے سے کنکشن کا انتظام کرے گا اور انہیں مؤثر طریقے سے دوبارہ استعمال کرے گا.

Redis جب دستیاب نہ ہو تو معاملات کو ہینڈل کریں۔

ایسے معاملات کو سنبھالنے کے لیے جب Redis دستیاب نہ ہو یا آہستہ سے جواب دیا جائے، مناسب ٹائم آؤٹ سیٹ کرنے اور کنکشن کی خرابیوں کو احسن طریقے سے ہینڈل کرنے پر غور کریں۔

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

استعمال کریں۔ Redis Sentinel

Redis Sentinel Redis کلسٹرز کے لیے اعلیٰ دستیابی اور نگرانی فراہم کرتا ہے ۔ جب ماسٹر نوڈ دستیاب نہیں ہوتا ہے تو یہ خود بخود فیل اوور کو ہینڈل کرتا ہے۔

یہاں ایک مثال کنفیگریشن ہے:

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

مندرجہ بالا کنفیگریشن ایک ایسا سیٹ اپ کرتی ہے Redis Sentinel جو Redis 5000ms کی ڈاون-آفٹر-ملی سیکنڈز تھریشولڈ، 10000ms کے فیل اوور ٹائم آؤٹ، اور 1 متوازی مطابقت پذیری کے ساتھ ایک ماسٹر کی نگرانی کرتا ہے۔

 

Redis ان اقدامات اور مثالوں پر عمل کر کے، آپ کسی ایپلیکیشن کے ساتھ کام کرتے وقت مؤثر طریقے سے خرابیوں کا ازالہ کر سکتے ہیں اور ان کو سنبھال سکتے ہیں NodeJS ، اپنی درخواست کی قابل اعتمادی اور کارکردگی کو یقینی بنا کر۔