Par "durable" Je veux dire, le serveur peut tomber en panne à tout moment, et aussi longtemps que le disque reste intact, aucune donnée n'est perdue (voir ACID). On dirait que c'est ce que le mode de journalisation est pour, mais si vous activez la journalisation, cela ne va-t-il pas à l'encontre du but d'opérer sur des données en mémoire? Les opérations de lecture peuvent ne pas être affectées par la journalisation, mais il semble que la journalisation tue vos performances en écriture.Est-ce que redis est une banque de données durable?
Répondre
Redis n'est pas habituellement déployé comme un magasin de données «durable» (dans le sens de la «D» dans ACID.), Même avec la journalisation. La plupart des cas d'utilisation sacrifient volontairement un peu de durabilité en échange de la vitesse. Cependant, le mode de stockage "append only file" peut éventuellement être configuré pour fonctionner de façon durable, au détriment des performances. Il devra payer pour un fsync() à chaque modification. Pour configurer cela, définir ces deux options dans votre fichier .conf:
appendonly yes
appendfsync always
De la documentation: How durable is the append only file?
Vérifiez redis.conf, vous pouvez configurer combien de fois Redis seront données fsync() sur le disque. Il y a trois options:
- fSYNC() chaque fois qu'une nouvelle commande est ajouté au fichier journal append. Très très lent, très sûr.
- Fsync() une fois chaque seconde. Assez rapidement, et vous pouvez perdre 1 seconde de données en cas de sinistre .
- Jamais fsync(), il suffit de mettre vos données entre les mains du système d'exploitation . La méthode plus rapide et plus rapide.
(Notez que la valeur par défaut pour appendfsync dans l'expédition de fichier de configuration avec post-2.0.0 Redis est everysec
, et non always
.)
Bon à savoir. Pouvez-vous fournir un lien pour soutenir ce que vous dites? – allyourcode
@FrankFarmer J'ai édité la réponse certains, parce qu'il avait des informations périmées sur la configuration par défaut et aussi "enterré le titre" un peu en menant avec "Non" N'hésitez pas à améliorer mes améliorations. :-) – HostileFork
@HostileFork compte tenu des changements importants que vous avez apportés, je pense que vous feriez mieux de soumettre votre propre réponse. Cela fait assez longtemps qu'une nouvelle perspective est certainement la bienvenue –
Vous ne pouvez pas avoir les deux. Soit certaines données sont dans les limbes, soit vous devez attendre que toutes les données soient écrites sur le disque. –
C'est exactement pourquoi je pose cette question. – allyourcode