Je comprends que Redis sert toutes les données de la mémoire, mais persiste-t-il également lors du redémarrage du serveur, de sorte que lorsque le serveur redémarre, il lit en mémoire toutes les données du disque. Ou est-ce toujours un magasin vide qui sert uniquement à stocker des données pendant que les applications s'exécutent sans persistance?
122
Réponses:
Je vous suggère de lire à ce sujet sur http://redis.io/topics/persistence . En gros, vous perdez la persistance garantie lorsque vous augmentez les performances en utilisant uniquement le stockage en mémoire. Imaginez un scénario dans lequel vous insérez dans la mémoire, mais avant que cela ne persiste, le disque perd de la puissance. Il y aura une perte de données.
Redis prend en charge les soi-disant «instantanés». Cela signifie qu'il fera une copie complète de ce qui est en mémoire à certains moments (par exemple, toutes les heures). Lorsque vous perdez de la puissance entre deux instantanés, vous perdrez les données du temps écoulé entre le dernier instantané et le crash (il n'est pas nécessaire qu'il s'agisse d'une panne de courant ..). Redis échange la sécurité des données contre la performance, comme le font la plupart des bases de données NoSQL.
La plupart des bases de données NoSQL suivent un concept de réplication entre plusieurs nœuds pour minimiser ce risque. Redis est plus considéré comme un cache rapide que comme une base de données garantissant la cohérence des données. Par conséquent, ses cas d'utilisation diffèrent généralement de ceux des bases de données réelles: vous pouvez, par exemple, stocker des sessions, des compteurs de performances ou tout ce qui s'y trouve avec des performances inégalées et aucune perte réelle en cas de panne. Mais le traitement des commandes / des historiques d'achat, etc., est considéré comme un travail pour les bases de données traditionnelles.
la source
Le serveur Redis enregistre de temps en temps toutes ses données sur le disque dur, offrant ainsi un certain niveau de persistance.
Il enregistre les données dans l'un des cas suivants:
BGSAVE
commandeMais les données dans Redis ne sont pas vraiment persistantes, car:
BGSAVE
l'opération ne peut être effectuée que si vous disposez de suffisamment de RAM libre (la quantité de RAM supplémentaire est égale à la taille de la base de données redis)NB: les
BGSAVE
besoins en RAM sont un réel problème, car redis continue de fonctionner jusqu'à ce qu'il n'y ait plus de RAM à exécuter, mais il arrête d'enregistrer les données sur le disque dur beaucoup plus tôt (à environ 50% de la RAM).Pour plus d'informations, consultez Persistance Redis .
la source
C'est une question de configuration. Vous pouvez avoir aucune persistance, partielle ou totale de vos données sur Redis. La meilleure décision sera guidée par les besoins techniques et commerciaux du projet.
Selon la documentation Redis sur la persistance, vous pouvez configurer votre instance pour enregistrer des données sur le disque de temps en temps ou sur chaque requête, en un mot. Ils fournissent deux stratégies / méthodes AOF et RDB (lisez la documentation pour voir les détails à ce sujet), vous pouvez utiliser chacune d'elle seule ou ensemble.
Si vous voulez un "SQL comme la persistance", ils ont dit:
la source
La réponse est généralement oui , mais une réponse plus complète dépend vraiment du type de données que vous essayez de stocker. En général, la réponse courte la plus complète est:
Cela dit, par défaut Redis va conserver des données instantanés à un intervalle périodique (apparemment , c'est toutes les 1 minute, mais je n'ai pas vérifié cela - cela est décrit par l'article ci - dessous, ce qui est une bonne intro de base):
http://qnimate.com/redis-permanent-storage/
TL; DR
À partir des documents officiels :
Redis doit être explicitement configuré pour la persistance AOF, si cela est nécessaire, ce qui entraînera une baisse des performances ainsi qu'une augmentation des journaux. Cela peut suffire pour une persistance relativement fiable d'une quantité limitée de flux de données.
la source
Vous ne pouvez choisir aucune persistance, de meilleures performances mais toutes les données sont perdues lors de l'arrêt de Redis.
Redis a deux mécanismes de persistance: RDB et AOF.RDB utilise un snapshooting global de planificateur et AOF écrit la mise à jour dans un fichier journal apappend uniquement similaire à MySql.
Vous pouvez utiliser l'un d'entre eux ou les deux. Lorsque Redis redémarre, il construit les données à partir de la lecture du fichier RDB ou du fichier AOF.
la source