1 votes

Pourquoi Redis ne démarre-t-il pas avec la configuration par défaut ?

J'utilise Ubuntu 18 (en fait, le sous-système Windows pour Linux avec la distro Ubuntu 18). J'ai installé redis 4.0.9. Si je le démarre sans spécifier de configuration, il fonctionne bien :

redis-server

enter image description here

Cependant, si je le démarre en utilisant le fichier de configuration par défaut qui a été installé, une erreur se produit : enter image description here enter image description here

Pourquoi ça ? J'ai modifié la configuration par défaut plus tôt, mais j'ai ensuite désinstallé avec --purge et réinstallé redis-server pour retrouver la configuration par défaut originale. Mais l'erreur persiste.

Vous pouvez voir la configuration chargée qui me cause des problèmes ici : https://defuse.ca/b/g4wHiT0SlX0AUcpuSpgx3v

PS

J'ai posté ce message sur StackOverflow après avoir réalisé qu'il s'agissait peut-être du meilleur forum puisqu'il n'y a que quelques centaines de questions sur Redis ici, mais plus de 15 000 là-bas. Désolé pour la duplication.

2voto

asktyagi Points 2051

Il semble que vous restauriez RDB à partir d'un serveur différent ou d'une configuration différente et que le type de données ne corresponde pas à la façon dont elles sont écrites ou ne peuvent pas être interprétées sans ReJSON-RL. Si c'est le cas, il suffit de passer le module requis lors du démarrage du serveur et cela devrait fonctionner, comme ci-dessous

redis-server --loadmodule /path/to/module/rejson.so

1voto

Nutritioustim Points 864

Grâce à Itamar Haber et aux commentaires/réponses d'asktyagi, je pense avoir compris ce qui se passait.

Lorsque j'utilisais précédemment le ReJSON a écrit des données dans la base de données. Par défaut, Redis sauvegarde ses données sur le disque de temps en temps (je pensais à tort qu'il fonctionnait entièrement en RAM). Donc ce qui s'est passé, c'est qu'une fois que je suis revenu à la configuration de base et que j'ai arrêté d'utiliser le module, Redis n'a pas pu démarrer et récupérer à partir de la sauvegarde puisqu'il ne pouvait pas analyser les données laissées par le module maintenant disparu. D'où l'erreur.

La raison pour laquelle la désinstallation et la réinstallation n'ont pas aidé est que la nouvelle installation de Redis trouve toujours le fichier de sauvegarde laissé par l'installation précédente et essaie de récupérer ces données. Ce fichier était dump.rdb dans mon répertoire personnel. Peut-être qu'un script l'a déplacé là depuis le répertoire de travail de Redis pendant la désinstallation et qu'un autre script l'a restauré dans le répertoire de travail de Redis pendant l'installation . Donc pour que Redis revienne à la normale, je pense que j'ai dû faire l'une des choses suivantes :

  1. Déplacer/supprimer le dump.rdb Il n'y aurait donc pas de données à restaurer.
  2. Démarrer Redis avec le module qui a écrit les données
  3. Démarrer Redis sans configuration, ou une configuration qui ne trouverait pas dump.rdb

Voici la section pertinente de la configuration. Elle montre comment, avec sa configuration par défaut, Redis a pu trouver le vidage de données de l'installation précédente.

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

save 900 1
save 300 10
save 60 10000

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

Merci à tous pour votre aide. J'aurais aimé comprendre cela plus tôt ; j'ai fini par effacer le système d'exploitation et recommencer à zéro par frustration.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X