معالجة الأخطاء واستكشاف الأخطاء وإصلاحها 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 رئيسي مع حد أدنى بعد ميلي ثانية يبلغ 5000 مللي ثانية ، ومهلة تجاوز فشل قدرها 10000 مللي ثانية ، ومزامنة متوازية واحدة.

 

باتباع هذه الخطوات والأمثلة ، يمكنك استكشاف الأخطاء وإصلاحها ومعالجتها بشكل فعال عند التعامل مع Redis أحد NodeJS التطبيقات ، مما يضمن موثوقية التطبيق وأدائه.