Node-redis: إنشاء عميل redis باستخدام كائن الخيارات بدون المضيف والمنفذ.

تم إنشاؤها على ١٦ مارس ٢٠١٩  ·  18تعليقات  ·  مصدر: NodeRedis/node-redis

يعمل هذا الرمز بدون أخطاء ، حتى إذا لم يكن هناك خادم محلي قيد التشغيل. هل هو سلوك صحيح أم خطأ؟

const redis = require('redis')
const redisClient = redis.createClient({ retry_strategy: () => 1000 })
  • الإصدار : 2.8.1
  • النظام الأساسي : Node.js 10.15.3 Mac OS X Mojave و Node.js 11 alpine و Node.js 10.15.3 alpine
  • الوصف : إنشاء عميل redis باستخدام كائن الخيارات بدون المضيف والمنفذ.
Evaluating

ال 18 كومينتر

mikhailsidorov - نعم ، هذا صحيح ، لأن الخيارات الافتراضية هي "localhost" و 6379 على التوالي.

أوه ، لكنك تقول أنه لا يوجد خادم Redis محلي قيد التشغيل؟ ها ها ها ها
الآن سيكون هذا غريبًا بشكل لا يصدق.

أضمن أنه لا يزال لديك مثيل Redis قيد التشغيل ... انتقل إلى وحدة تحكم سطر أوامر linux.

عرض جميع مثيلات Redis قيد التشغيل
ps -aux | grep redis-server

اقتل جميع حالات Redis
killall redis-server

إغلاق التذكرة؟

قمت بتشغيله في عامل ميناء ، بدون ريديس. دعني اتحقق مرة اخرى.

يجب أن يعمل Redis في مكان ما ، لقد جربته في بيئتي وقمت بتشغيل /etc/init.d/redis-server stop . في المرة الأولى فعلت تمامًا كما ذكرت تمامًا كما كنت في حيرة من أمري! ثم قمت بتشغيل ps -aux | grep redis-server واكتشفت أنه لدي سبع نسخ Redis تعمل في الخلفية ، لول. بعد قتل الكل ، أخطأت العقدة redis على الفور كما هو متوقع.

mikhailsidorov - نعم ، هذا صحيح ، لأن الخيارات الافتراضية هي "localhost" و 6379 على التوالي.

أوه ، لكنك تقول أنه لا يوجد خادم Redis محلي قيد التشغيل؟ ها ها ها ها
الآن سيكون هذا غريبًا بشكل لا يصدق.

أضمن أنه لا يزال لديك مثيل Redis قيد التشغيل ... انتقل إلى وحدة تحكم سطر أوامر linux.

عرض جميع مثيلات Redis قيد التشغيل
ps -aux | grep redis-server

اقتل جميع حالات Redis
killall redis-server

إغلاق التذكرة؟

لا توجد عمليات خادم redis على جهازي وفي حاوية عامل الإرساء. أيضًا ، ليس لدي أي عملية تستمع إلى منفذ 6379 ( netstat -an | grep 6379 لا يُرجع شيئًا).

يجب أن يعمل Redis في مكان ما ، لقد جربته في بيئتي وقمت بتشغيل /etc/init.d/redis-server stop . في المرة الأولى فعلت تمامًا كما ذكرت تمامًا كما كنت في حيرة من أمري! ثم قمت بتشغيل ps -aux | grep redis-server واكتشفت أنه لدي سبع نسخ Redis تعمل في الخلفية ، لول. بعد قتل الكل ، أخطأت العقدة redis على الفور كما هو متوقع.

لم أجد أي عملية تشغيل لخادم redis.

لقد أعددت مثالاً لإعادة إنتاج المشكلة ، يرجى الاطلاع على هذا الريبو https://github.com/mikhailsidorov/redis-issue
يعمل هذا الرمز بدون أي أخطاء ، وليس لدي عمليات خادم redis تعمل على الجهاز الذي تم اختباره وعلى حاوية عامل الإرساء.

هل تديرون بالصدفة redis-mock أو أي شيء مشابه؟ (شك في ذلك ، فقط تحقق ...)
https://github.com/faeldt/redis-mock

هذا هو الخطأ الذي أتلقاه عند إيقاف تشغيل Redis وتشغيل تطبيقي ... (هذا ليس تطبيق Docker الذي قدمته) أحتاج إلى إعداد Docker ، ما زلت لا أستخدم عامل الإرساء ، ولا بد لي من التعامل مع الأوقات. سأحاول لاحقًا ...

Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1054:14)
Emitted 'error' event at:
    at RedisClient.on_error (/mnt/c/indospace.io/services/node_modules/redis/index.js:406:14)
    at Socket.<anonymous> (/mnt/c/indospace.io/services/node_modules/redis/index.js:279:14)
    at Socket.emit (events.js:196:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:17)

هل تديرون بالصدفة redis-mock أو أي شيء مشابه؟ (شك في ذلك ، فقط تحقق ...)
https://github.com/faeldt/redis-mock

هذا هو الخطأ الذي أتلقاه عند إيقاف تشغيل Redis وتشغيل تطبيقي ... (هذا ليس تطبيق Docker الذي قدمته) أحتاج إلى إعداد Docker ، ما زلت لا أستخدم عامل الإرساء ، ولا بد لي من التعامل مع الأوقات. سأحاول لاحقًا ...

Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1054:14)
Emitted 'error' event at:
    at RedisClient.on_error (/mnt/c/indospace.io/services/node_modules/redis/index.js:406:14)
    at Socket.<anonymous> (/mnt/c/indospace.io/services/node_modules/redis/index.js:279:14)
    at Socket.emit (events.js:196:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:17)

لا ، أنا لا أستخدم redis-mock. عندما أقوم بتشغيل const redisClient = redis.createClient() بدون خيارات ، لدي نفس الخطأ ، لكن عندما أجتاز { retry_strategy: () => 1000 } أحصل على هذه المشكلة.

حسنًا ، أعتقد أننا على نفس الصفحة الآن ...

يا ، يبدو أن رمز إعادة الاتصال / إعادة الاتصال node_redis معطل تمامًا في الوقت الحالي ، فهناك العديد من التذاكر المفتوحة التي تشير إلى هذه المشكلات. لقد قدمت طلبات العلاقات العامة على وحدات nodeJS الأخرى الليلة ، وسأحاول التعمق في هذا وتقديم عرض عام صالح عندما يمكنني ذلك.

حسنًا ، أعتقد أننا على نفس الصفحة الآن ...

يا ، يبدو أن رمز إعادة الاتصال / إعادة الاتصال node_redis معطل تمامًا في الوقت الحالي ، فهناك العديد من التذاكر المفتوحة التي تشير إلى هذه المشكلات. لقد قدمت طلبات العلاقات العامة على وحدات nodeJS الأخرى الليلة ، وسأحاول التعمق في هذا وتقديم عرض عام صالح عندما يمكنني ذلك.

شكرا لك

هذا متعمد إلى حد ما. تحقق من connect_timeout : Default is to try connecting until the default system socket timeout has been exceeded and to try reconnecting until 1h has elapsed. .

القصد من ذلك هو الحصول على وظيفة قوية للغاية حيث يكون كل منطق إعادة الاتصال في يد المستخدم. قد لا يكون دائمًا مثاليًا على الرغم من ذلك.

هذا متعمد إلى حد ما. تحقق من connect_timeout : Default is to try connecting until the default system socket timeout has been exceeded and to try reconnecting until 1h has elapsed. .

القصد من ذلك هو الحصول على وظيفة قوية للغاية حيث يكون كل منطق إعادة الاتصال في يد المستخدم. قد لا يكون دائمًا مثاليًا على الرغم من ذلك.

شكرا على التوضيح.

mikhailsidorov - إغلاق القضية؟

knoxcard أود أن أبقي هذا مفتوحًا لنفسي للنظر في هذا مرة أخرى عندما أجد بعض الوقت.

knoxcard شكرا للنظر في اثنين من القضايا هنا بالمناسبة! هل أنت مهتم بالمساعدة بشكل عام؟

Bridgear -

mikhailsidorov - إغلاق القضية؟

بالتأكيد ، إذا لزم الأمر. شكرا

mikhailsidorov - ما

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