Node-redis: الفرق بين unref () و quit () و end ()

تم إنشاؤها على ١١ فبراير ٢٠١٥  ·  6تعليقات  ·  مصدر: NodeRedis/node-redis

كما يشير العنوان ، حتى بعد قراءة الوثائق ، ليس من الواضح بالنسبة لي الفرق بين unref() ، quit() و end() .

  • أي واحد يجب أن أستخدمه وفي أي حالة استخدام؟

يبدو أن end() يغلق الاتصال دون انتظار إغلاق جميع المقابس.
يبدو أن unref() ينتظر انتهاء جميع الأوامر.
يبدو أن quit() مشابه لـ unref() .

  • نظرًا لأن unref() ليس به مهلة ، فهل هو مضمون لإنهائه أم يجب علي تعيين مهلة؟
  • هل تم استدعاء الحدث end قيد أو شرط من أي حدث اتصلت به؟
question

التعليق الأكثر فائدة

end() للاستخدام حيث تقوم بإنهاء التطبيق الآن ، على سبيل المثال معالج uncaughtException ، ولا تتوقع أو تريد انتظار ردود (إن وجدت) من الأوامر التي قد تكون أرسلتها التي لم تعد من Redis بعد.

quit() عندما تنتهي من هذا الاتصال وترغب في إغلاقه ، ولكن مع السماح بإكمال النشاط غير المكتمل. في معظم الحالات ، إذا كنت تحاول إنهاء الاتصال ، فاستخدم quit()

لم يتم تصميم unref() للتنافس مع هذه الخيارات ، ولكن ببساطة للسماح لتطبيقك بالخروج إذا كان الشيء الوحيد غير المتزامن المتبقي هو عميل Redis. هذا هو الحال عادةً بالنسبة لنوع من البرامج النصية حيث تقوم بإجراء استعلام دفعي ، أو اختبار يتصل بـ Redis. يتصرف بشكل مماثل لـ unref هنا http://nodejs.org/api/net.html#net_server_unref

ال 6 كومينتر

end() للاستخدام حيث تقوم بإنهاء التطبيق الآن ، على سبيل المثال معالج uncaughtException ، ولا تتوقع أو تريد انتظار ردود (إن وجدت) من الأوامر التي قد تكون أرسلتها التي لم تعد من Redis بعد.

quit() عندما تنتهي من هذا الاتصال وترغب في إغلاقه ، ولكن مع السماح بإكمال النشاط غير المكتمل. في معظم الحالات ، إذا كنت تحاول إنهاء الاتصال ، فاستخدم quit()

لم يتم تصميم unref() للتنافس مع هذه الخيارات ، ولكن ببساطة للسماح لتطبيقك بالخروج إذا كان الشيء الوحيد غير المتزامن المتبقي هو عميل Redis. هذا هو الحال عادةً بالنسبة لنوع من البرامج النصية حيث تقوم بإجراء استعلام دفعي ، أو اختبار يتصل بـ Redis. يتصرف بشكل مماثل لـ unref هنا http://nodejs.org/api/net.html#net_server_unref

ثم يتم إصدار حدث end فقط من عند استدعاء quit() ما يبدو. لست متأكدا بالضبط لماذا بدون بحث.

إذا لم تتصل بإنهاء ما يحدث.

techsin إذا لم تغلق اتصال redis مطلقًا ، فسيظل تطبيق العقدة الخاص بك منتظرًا إلى الأبد متصلاً بخادم Redis.

ماذا لو تم إغلاق التطبيق ، لكن خادم redis لا يزال قيد التشغيل. هل هذا يجعل خادم redis يحمل مرجعًا؟ هل سيكون ذلك نوعًا من تسرب الذاكرة

آسف لم أكن واضحا لأول مرة

كلا ، إذا تم إغلاق التطبيق ، فإنه سينهي اتصال العميل وسينهي خادم Redis المرجع من جانبه ، لذلك لن يحدث تسرب للذاكرة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات