web-dev-qa-db-fra.com

Redis conserve-t-il les données?

Je comprends que Redis sert toutes les données en mémoire, mais cela persiste également lors du redémarrage du serveur. Ainsi, 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 lorsque les applications sont exécutées sans persistance?

86
Zuriar

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 en mémoire, mais avant qu’il ne persiste sur le disque, vous perdez de la puissance. Il y aura une perte de données.

Redis supporte les "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 le pouvoir entre deux instantanés, vous perdrez les données entre le dernier instantané et l’incident (il n’est pas nécessaire que ce soit 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 afin de minimiser ce risque. Redis est davantage 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 de bases de données réelles: vous pouvez, par exemple, stocker des sessions, des compteurs de performance ou quoi que ce soit d'autre avec des performances inégalées et aucune perte réelle en cas de blocage. Mais traiter les commandes/l'historique des achats, etc., est considéré comme un travail pour les bases de données traditionnelles.

51

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:

  • automatiquement de temps en temps
  • lorsque vous appelez manuellement BGSAVE commande
  • quand Redis est en train de s'arrêter

Mais les données dans redis ne sont pas vraiment persistantes, car:

  • crash du processus Redis signifie perdre tous les changements depuis la dernière sauvegarde
  • L'opération BGSAVE ne peut être effectuée que si vous avez suffisamment d'espace libre RAM (le montant de l'extra RAM est égal à la taille de la base de données redis))

NB: BGSAVE RAM est un réel problème car Redis continue de fonctionner jusque-là n'est plus 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, voir Redis Persistence .

23
Leonid Beschastny

C'est une question de configuration. Vous ne pouvez avoir aucune persistance partielle ou totale de vos données sur Redis. La meilleure décision dépend des besoins techniques et commerciaux du projet.

Selon la documentation Redis sur la persistance , vous pouvez configurer votre instance pour enregistrer les 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 avoir plus de détails à ce sujet), vous pouvez les utiliser seules ou ensemble.

Si vous voulez un "SQL comme persistance", ils ont dit:

L’indication générale est que vous devez utiliser les deux méthodes de persistance si vous voulez un degré de sécurité des données comparable à ce que PostgreSQL peut vous fournir.

9
Adailson De Castro

Vous pouvez choisir aucune persistance du tout. De meilleures performances, mais toutes les données sont perdues lorsque Redis s'arrête.

Redis dispose de deux mécanismes de persistance: RDB et AOF.RDB utilise une capture instantanée globale du planificateur et AOF écrit la mise à jour dans un fichier journal unique, similaire à MySql.

Vous pouvez utiliser l'un d'entre eux ou les deux. Lorsque Redis redémarre, il crée des données à partir de la lecture du fichier RDB ou du fichier AOF.

4
songxin