Node-redis: Création d'un client redis à l'aide de l'objet options sans hôte ni port.

Créé le 16 mars 2019  ·  18Commentaires  ·  Source: NodeRedis/node-redis

Ce code s'exécute sans erreur, même s'il n'y a pas de serveur local en cours d'exécution. Est-ce un comportement correct ou un bug ?

const redis = require('redis')
const redisClient = redis.createClient({ retry_strategy: () => 1000 })
  • Version : 2.8.
  • Plateforme : Node.js 10.15.3 Mac OS X Mojave, Node.js 11 alpin, Node.js 10.15.3 alpin
  • Description : Création d'un client redis à l'aide de l'objet options sans hôte ni port.
Evaluating

Tous les 18 commentaires

@mikhailsidorov - Oui, c'est correct, car les options par défaut sont respectivement 'localhost' et 6379 .

Oh, mais vous dites qu'il n'y a pas de serveur Redis en cours d'exécution ? hahaha
Ce serait incroyablement étrange.

Je vous garantis que vous avez toujours une instance Redis en cours d'exécution... accédez à votre console de ligne de commande Linux.

Afficher toutes les instances de Redis en cours d'exécution
ps -aux | grep redis-server

Tuer toutes les instances Redis
killall redis-server

Fermer le ticket ?

Je l'ai exécuté dans docker, sans redis. Laissez-moi vérifier à nouveau.

Redis doit être exécuté quelque part, je l'ai essayé dans mon environnement et j'ai exécuté /etc/init.d/redis-server stop . La première fois, cela a fait exactement ce que vous avez mentionné car j'étais déconcerté! Ensuite, j'ai exécuté ps -aux | grep redis-server et j'ai découvert que sept instances Redis s'exécutaient en arrière-plan, lol. Après avoir tout tué, node redis s'est immédiatement trompé comme prévu.

@mikhailsidorov - Oui, c'est correct, car les options par défaut sont respectivement 'localhost' et 6379 .

Oh, mais vous dites qu'il n'y a pas de serveur Redis en cours d'exécution ? hahaha
Ce serait incroyablement étrange.

Je vous garantis que vous avez toujours une instance Redis en cours d'exécution... accédez à votre console de ligne de commande Linux.

Afficher toutes les instances de Redis en cours d'exécution
ps -aux | grep redis-server

Tuer toutes les instances Redis
killall redis-server

Fermer le ticket ?

Il n'y a pas de processus redis-server sur ma machine et dans le conteneur Docker. De plus, je n'ai aucun processus à l'écoute du port 6379 ( netstat -an | grep 6379 ne renvoie rien).

Redis doit être exécuté quelque part, je l'ai essayé dans mon environnement et j'ai exécuté /etc/init.d/redis-server stop . La première fois, cela a fait exactement ce que vous avez mentionné car j'étais déconcerté! Ensuite, j'ai exécuté ps -aux | grep redis-server et j'ai découvert que sept instances Redis s'exécutaient en arrière-plan, lol. Après avoir tout tué, node redis s'est immédiatement trompé comme prévu.

Je n'ai trouvé aucun processus du serveur redis en cours d'exécution.

J'ai préparé un exemple pour reproduire le problème, veuillez consulter ce dépôt https://github.com/mikhailsidorov/redis-issue
Ce code s'exécute sans aucune erreur, et je n'ai pas exécuté de processus redis-server sur la machine testée et sur le conteneur docker.

Êtes-vous par hasard en train d'exécuter redis-mock, ou quelque chose de similaire ? (J'en doute, je vérifie juste...)
https://github.com/faeldt/redis-mock

Voici l'erreur que je reçois lorsque je désactive Redis et lance mon application... (Ce n'est pas l'application docker que vous avez fournie) Je dois configurer docker, je n'utilise toujours pas docker, je dois me débrouiller avec le temps. J'essaierai un peu plus tard....

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)

Êtes-vous par hasard en train d'exécuter redis-mock, ou quelque chose de similaire ? (J'en doute, je vérifie juste...)
https://github.com/faeldt/redis-mock

Voici l'erreur que je reçois lorsque je désactive Redis et lance mon application... (Ce n'est pas l'application docker que vous avez fournie) Je dois configurer docker, je n'utilise toujours pas docker, je dois me débrouiller avec le temps. J'essaierai un peu plus tard....

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)

Non, je n'utilise pas redis-mock. Lorsque j'exécute const redisClient = redis.createClient() sans options, j'ai la même erreur, mais lorsque je passe { retry_strategy: () => 1000 } j'obtiens ce problème.

oh d'accord, je pense que nous sommes sur la même longueur d'onde maintenant...

Oui, le code de nouvelle tentative de connexion/reconnexion de node_redis semble complètement bloqué pour le moment, il existe de nombreux tickets ouverts faisant référence à ces problèmes. Je reçois des demandes de relations publiques sur d'autres modules nodeJS ce soir, j'essaierai de m'y plonger et de soumettre une relation publique valide quand je le pourrai.

oh d'accord, je pense que nous sommes sur la même longueur d'onde maintenant...

Oui, le code de nouvelle tentative de connexion/reconnexion de node_redis semble complètement bloqué pour le moment, il existe de nombreux tickets ouverts faisant référence à ces problèmes. Je reçois des demandes de relations publiques sur d'autres modules nodeJS ce soir, j'essaierai de m'y plonger et de soumettre une relation publique valide quand je le pourrai.

Merci

C'est quelque peu intentionnel. Chèque connect_timeout : Default is to try connecting until the default system socket timeout has been exceeded and to try reconnecting until 1h has elapsed. .

L'intention est d'avoir une fonction très puissante où toute la logique de reconnexion est entre les mains de l'utilisateur. Cependant, ce n'est peut-être pas toujours l'idéal.

C'est quelque peu intentionnel. Chèque connect_timeout : Default is to try connecting until the default system socket timeout has been exceeded and to try reconnecting until 1h has elapsed. .

L'intention est d'avoir une fonction très puissante où toute la logique de reconnexion est entre les mains de l'utilisateur. Cependant, ce n'est peut-être pas toujours l'idéal.

Merci pour la clarification.

@mikhailsidorov - problème proche ?

@knoxcard J'aimerais garder cela ouvert pour moi-même pour y réfléchir à nouveau quand je trouverai un peu de temps.

@knoxcard merci d'avoir examiné quelques problèmes ici au fait ! Êtes-vous intéressé à aider plus en général?

@BridgeAR - absolument ! comment dois-je aider davantage?

@mikhailsidorov - problème proche ?

Bien sûr, si c'est nécessaire. Merci

@mikhailsidorov - peu importe de clore le problème, BridgeAr veut garder ce problème ouvert, merci !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

dotSlashLu picture dotSlashLu  ·  5Commentaires

aletorrado picture aletorrado  ·  6Commentaires

Mickael-van-der-Beek picture Mickael-van-der-Beek  ·  6Commentaires

strumwolf picture strumwolf  ·  4Commentaires

twappworld picture twappworld  ·  7Commentaires