web-dev-qa-db-fra.com

Redis est configuré pour enregistrer les instantanés de la base de données de résolution, mais n'est pas capable de rester sur le disque

Je reçois le message d'erreur suivant chaque fois que j'exécute des commandes qui modifient des données dans Redis

Redis is configured to save RDB snapshots, but is currently not able to persist on disk.
Commands that may modify the data set are disabled. 
Please check Redis logs for details about the error.

J'ai installé Redis en utilisant Brew sur Mac. Comment puis-je obtenir l'emplacement des fichiers journaux où redis-server enregistre les informations. J'ai essayé de chercher Redis Conf. fichier, mais n'a pas pu le trouver non plus.

Quel est l'emplacement par défaut du [1] fichier de configuration redis [2] du fichier journal redis.

Comment puis-je me débarrasser de l'erreur ci-dessus et être capable d'exécuter des commandes qui modifient des données dans redis.

35
user462455

Lors de l'installation avec infusion, le fichier journal est défini sur stdout. Vous devez éditer /usr/local/etc/redis.conf et changer le fichier journal en quelque chose d'autre. Je mets le mien à:

logfile /var/log/redis-server.log

Vous devrez également vous assurer que l'utilisateur qui exécute redis dispose des autorisations d'écriture sur le fichier journal, sinon le lancement de redis ne pourra tout simplement pas se terminer complètement. Ensuite, redémarrez Redis:

brew services restart redis

Après le redémarrage, il faudra un certain temps pour que l'erreur apparaisse dans les journaux, car elle survient après l'échec de la vidange chronométrée de redis. Vous devriez voir quelque chose comme:

[7051] 29 Dec 02:37:47.164 # Background saving error
[7051] 29 Dec 02:37:53.009 * 10 changes in 300 seconds. Saving...
[7051] 29 Dec 02:37:53.010 * Background saving started by pid 7274
[7274] 29 Dec 02:37:53.010 # Failed opening .rdb for saving: Permission denied

Après l’installation d’une infusion, il tente de sauvegarder en /usr/local/var/db/redis/ et, étant donné que redis est probablement exécuté en tant qu’utilisateur actuel et non en tant que root, il ne peut pas y écrire. Une fois que redis est autorisé à écrire dans le répertoire, votre fichier de log dit:

[7051] 29 Dec 03:08:59.098 * 1 changes in 900 seconds. Saving...
[7051] 29 Dec 03:08:59.098 * Background saving started by pid 8833
[8833] 29 Dec 03:08:59.099 * DB saved on disk
[7051] 29 Dec 03:08:59.200 * Background saving terminated with success

et l'erreur stop-writes-on-bgsave-error ne sera plus déclenchée.

15
Kit Sunde

Je suppose donc qu'il est un peu tard pour ajouter une réponse ici, mais je me suis posé la même question sur votre question, car j'avais la même erreur. Je l’ai résolu en changeant la variable dir de redis.conf comme ceci:

# 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 /root/path/to/dir/with/write/access/

La valeur default est la suivante: ./, vous ne pourrez donc peut-être pas enregistrer des instantanés en fonction de la méthode de lancement de votre serveur Redis.

J'espère que ça aide quelqu'un!

7
mcorbe

C'est généralement parce que les limites d'autorisation. Dans mon cas, les options d’écriture sont désactivées.

Vous pouvez essayer d'exécuter redis-cli dans le shell, puis exécutez la commande suivante:

set stop-writes-on-bgsave-error yes
5
kxxoling

Dans mon cas, j'ai résolu ce problème avec les étapes ci-dessous 

Cause: Par défaut, redis stocke les données @ ./ et si redis est exécuté avec un utilisateur de redis, cela signifie que redis ne sera pas en mesure d'écrire des données dans le fichier ./.

Résolution: Étape # 1 (Entrez un emplacement valide où redis peut effectuer des opérations d'écriture) Root @ fpe:/var/lib/redis # vim/etc/redis/redis.conf

dir/var/lib/redis # (Cet emplacement doit avoir le droit d'écrire pour l'utilisateur de redis)

Étape n ° 2 (connectez-vous à redis cli et au répertoire map pour écrire et publier la variable ci-dessous)

127.0.0.1:6379> CONFIG SET dir "/ var/lib/redis"

127.0.0.1:6379> BGSAVE -

Cela permettra à redis d'écrire des données sur un fichier de vidage.

1
Mansur Ali

Vérifiez les endroits suivants:

/usr/local/Cellar/redis...
/usr/local/var/log/redis.log
/usr/local/etc/redis.conf

Cette erreur indique souvent un problème d'autorisations en écriture, assurez-vous que votre répertoire RDB est accessible en écriture.

0
FGRibreau