47 votes

Redis est-il un magasin de données durable ?

Par "durable" je veux dire, le serveur peut planter à tout moment, et aussi longtemps que le disque reste dans le tact, aucune donnée n'est perdue (voir ACID). On dirait que c'est ce mode journaling est pour, mais si vous activez journaling, n'est-ce pas vaincre le but d'opérer sur les données dans la mémoire? Lire les opérations pourraient ne pas être affectés par la journalisation, mais il semble que la journalisation tuerait vos performances d'écriture.

64voto

Frank Farmer Points 16159

Pas de. Redis est pas un "durable" de la banque de données, dans le sens de "D" dans l'ACIDE.

En mode de journalisation, redis écrit sur le disque aussi vite qu'il le peut, mais on peut tomber derrière. Toutes les données qui ont été stockées dans la mémoire, mais pas encore journalled serait perdu en cas de crash.

Redis intentionnellement sacrifie un peu de la durabilité en retour pour la vitesse.

...Après la lecture de la documentation de plus près, je vois qui n'est pas strictement vrai. "Ajouter fichier" mode de stockage peut être configurée pour fonctionner de manière durable, au détriment des performances.

À partir de la documentation:

Quelle est la durabilité de la ajouter qu'un seul fichier?

Vérifier le redis.conf, vous pouvez configurer combien de fois Redis sera fsync() données sur le disque. Il y a trois options:

  • Fsync() à chaque fois qu'une nouvelle commande est ajouté à l'ajout de fichier journal. Très très lent, très sûr.
  • Fsync() une seule fois chaque seconde. Assez rapide, et vous pouvez perdre 1 seconde de données si il y a un catastrophe.
  • Jamais fsync(), il suffit de mettre votre les données dans les mains de l'Exploitation Système. Le plus rapide et unsafer méthode.

Attention: par défaut Redis sera fsync() après chaque commande! C'est parce que le Redis auteurs voulez expédier un configuration par défaut qui est le la plus sûre de sélection. Mais le meilleur compromis pour la plupart des ensembles de données est à fsync() un de temps à chaque seconde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X