Redis Technology Topic Series vous aide à comprendre les principes de la technologie rdb du Bas (Basic)

Tarzan d'Ali 2021-09-15 07:41:10
redis technology topic series vous


Une phrase par jour

L'inclinaison est une capacité,Ce n'est pas une infériorité,Ni timide,C'est une transmutation consciente.Parfois,Baisse un peu la tête,Ou peut - être que notre vie sera meilleure. 

Résumé des prémisses

RedisC'est une clé-Valeur(K-V)Service de base de données de mémoire pour,Contient généralement n'importe quelle base de données non vide.Et chaque base de données de clés non vides peut contenir n'importe quoiK-V,La structure de base est la suivante:

  • RedisUne grande partie de la forte performance de est due au fait qu'il stocke toutes les données en mémoire,Pour faireRedis.Il est toujours garanti que les données ne seront pas perdues après le redémarrage,Besoin de synchroniser les données de la mémoire vers le disque dur d'une manière ou d'une autre,Ce processus est persistant.

  • Nous savons queredisLes données mises en cache sont stockées en mémoire,En cas de panne de service,Perte de données en mémoire,Il faut donc un système de persistance des données,Oui.redisDonnées en mémoire,Écrire sur le disque,QuandredisAprès redémarrage,Récupère les données du disque.

RedisStructure du serveur

  • Il y a un problème.,Parce queRedisC'est une base de données de mémoire,S'il stocke les données directement en mémoire,Mais si l'on ne tient pas compte de la persistance des données stockées en mémoire sur le disque dur,Une fois le processus serveur terminé,Les données de la base de données disparaîtront.

  • Il existe deux principaux mécanismes de persistance des bases de données,L'un estRDBMécanismes,L'autre estAOFMécanismes,AOFLe mécanisme a déjà été décrit dans l'article précédent,

  • Si vous êtes intéressé, allez voir,Et cet article parle principalement deRDBMécanismes.

RDBMode de persistance

RDBLa persistance est définie comme le fait deredisUn instantané de l'ensemble de données en mémoire est écrit sur le disque,Le principe de réalisation estredisLe Service commence par un intervalle de temps spécifiéforkUn sous - processus,Écrire un ensemble de données dans un fichier temporaire par un sous - processus,Après une écriture réussie,Remplacer les fichiers précédents,Stockage par compression binaire,Générerdump.rdbLes fichiers sont stockés sur disque.

RDBMécanismes

  • RedisOffreRDBCapacité de persistance,Cette fonction peutRedisL'état de la base de données en mémoire reste sur le disque,Éviter la perte accidentelle de données.

  • RDBLe mécanisme de persistance peut être exécuté manuellement,Vous pouvez également sélectionner des actions périodiques en fonction de la configuration du serveur,.Cette fonction permet d'enregistrer un instantané des données à un moment donné dans unRDBDans le document.

RDBAvantages

  • Une fois cette méthode adoptée,Alors tout tonRedisLa base de données ne contiendra qu'un seul fichier,C'est parfait pour les sauvegardes de fichiers.Par exemple,,Vous avez peut - être l'intention d'archiver toutes les heures les plus récentes24Données horaires,Et aussi une fois par jour pour archiver le plus récent30Données pour les jours.Avec une telle stratégie de sauvegarde,En cas de défaillance catastrophique du système,Nous pouvons récupérer très facilement.

  • Pour la reprise après sinistre,RDBC'est un très bon choix.Parce que nous pouvons facilement compresser un seul fichier et le transférer sur un autre support de stockage.

  • Maximiser les performances.PourRedisPour le processus de service,Au début de la persistance,Tout ce qu'il faut, c'estforkProcessus enfant sortant,Ces travaux de persistance sont ensuite effectués par le Sous - processus,Cela évite grandement l'exécution du processus de serviceIOC'est parti..

  • Par rapport àAOFMécanismes,Si l'ensemble de données est grand,RDBL'efficacité de démarrage de.

RDBDésavantages

  • Si vous souhaitez garantir une disponibilité élevée des données,C'est - à - dire éviter au maximum la perte de données,AlorsRDBCe ne sera pas un bon choix.Parce qu'une fois que le système s'arrête avant la persistance programmée,Les données qui n'ont pas pu être écrites sur le disque avant seront perdues.

  • Parce queRDBC'est parforkSous - processus pour aider à la persistance des données,Donc,,Si l'ensemble de données est plus grand,Cela pourrait entraîner l'arrêt du service sur l'ensemble du serveur pendant des centaines de millisecondes,Même si1Secondes.

RDBRègles de configuration

InredisDe6379.confDans le profil:

Paramètres de configuration de sauvegarde

save <seconds> <changes>

save <Préciser l'intervalle de temps> <Effectuer l'opération de mise à jour du nombre spécifié de fois>,Si les conditions sont remplies, synchronisez les données en mémoire sur votre disque dur.La configuration officielle de l'usine par défaut est 900En quelques secondes.1Changements,300En quelques secondes.10Changements et60En quelques secondes.10000Changements,Écrit un instantané des données en mémoire sur le disque.

save 900 1 #In900Secondes(15Minutes)Après,Si au moins unkeyChangement,EtdumpSnapshots de mémoire
save 300 10 #In300Secondes(15Minutes)Après,Si au moins10- Oui.keyChangement,EtdumpSnapshots de mémoire
save 60 10000 #In60Secondes(1Minutes)Après,Si au moins10000- Oui.keyChangement,EtdumpSnapshots de mémoire

Paramètres de configuration du fichier

Par défautrdbLe chemin du fichier est le répertoire courant,Le nom du fichier estdump.rdb,Le chemin et le nom du fichier peuvent être modifiés dans le fichier de configuration,Respectivement.dirEtdbfilename.

# Répertoire dans lequel les instantanés sont stockés
dir ./ # rdbChemin de stockage des fichiers
dbfilename dump.rdb # rdbNom du fichier

Paramètres de configuration de compression

Lors d'une sauvegarde miroir,Si la compression est effectuée.

rdbcompression yes #RedisPar défaut, la compression est activée.
# yes:Compression,Mais j'en ai besoin.cpuConsommation.
# no:Non comprimé,Besoin d'espace disque supplémentaire.

Si le Snapshot automatique n'est pas déclenché,Oui.RedisEffectuer une opération manuelle de Snapshot,saveEtbgsaveCommande pour un instantané manuel,Les deux ordres sont:

  • SAVE:Snapshot by Master Process,Bloquera d'autres demandes.
  • BGSAVE:AdoptionforkLe processus enfant prend un instantané,Ne bloque pas d'autres demandes.

Attention!:Parce queRedisUtiliserforkPour copier une copie du processus actuel,Le Sous - processus aura alors les mêmes ressources de mémoire que le processus principal,Par exemple, le processus principal8GMémoire,Alors, au moment de la sauvegarde,Il faut s'assurer qu'il y a16GMémoire,Sinon, la mémoire virtuelle sera activée,Très mauvais rendement.

Le processus de Snapshot est le suivant:

  1. RedisUtiliserforkLa fonction copie une copie du processus actuel(Processus parent)Copie de(Sous - processus);
  2. Le processus parent continue de recevoir et de traiter les commandes du client,Et le Sous - processus commence à écrire des données en mémoire dans des fichiers temporaires sur le disque dur;
  3. Lorsque le Sous - processus a terminé d'écrire toutes les données, le fichier temporaire remplace l'ancienRDBDocumentation,Jusqu'à ce que l'opération Snapshot soit terminée.(Attention!:Il y aura une commande d'écriture pour compresser le cache,Enregistrement écritrdbAction au moment du fichier)

En coursforkLe système d'exploitation utilise la copie en écriture(copy-on-write)Stratégie,C'est - à - dire:forkLes processus parent - enfant partagent les mêmes données de mémoire au moment où la fonction se produit,Quand le processus parent veut changer une partie des données(Si vous exécutez une commande d'écriture),Le système d'exploitation copie les données de la tranche pour s'assurer que les données du sous - processus ne sont pas affectées,Donc le nouveauRDBLes fichiers sont stockés pour l'exécutionforkDonnées instantanées de la mémoire à ce moment.

Le processus décrit ci - dessus permet de constater queRedisNe pas modifier pendant le SnapshotRDBDocumentation,Remplacer l'ancien fichier par le nouveau seulement après la fin du Snapshot,Ce qui veut dire qu'à tout momentRDBLes documents sont complets.Cela permet une sauvegarde programméeRDBFichier à mettre en œuvreRedisSauvegarde de la base de données.

Analyse de la compression du processus pour les instantanés:

RDBLes fichiers sont compressés(Comme indiqué ci - dessus:ConfigurablerdbcompressionParamètres pour désactiver les économies de compressionCPUOccupation)Format binaire pour,Donc l'espace utilisé sera inférieur à la taille des données en mémoire,Plus facile à transmettre.

Lire le processus de chargement du Snapshot:

  • RedisLire après le démarrageRDBFichier Snapshot,Charger les données du disque dur en mémoire.En fonction de la taille des données, de la structure et des performances du serveur,Ce temps est différent.Habituellement, un enregistrement de 10 millions de clés de type chaîne、La taille est1GBLe chargement du fichier Snapshot en mémoire coûte20~30Secondes.

  • AdoptionRDBComment réaliser la persistance,Une foisRedisSortie anormale,Toutes les données qui ont changé depuis le dernier instantané sont perdues.Pour ce faire, les développeurs doivent s'adapter à des applications spécifiques,Contrôler la perte de données possible dans une plage acceptable en combinant les conditions de Snapshot automatique.Si les données sont si importantes qu'elles ne peuvent supporter aucune perte,Vous pouvez envisager d'utiliserAOFComment persister.

RDB Avantages et inconvénients

Avantages:

  1. Idéal pour la récupération de données à grande échelle.
  2. Si l'entreprise n'exige pas beaucoup d'intégrité et de cohérence des données,RDBC'est un bon choix.

Inconvénients:

  1. Manque d'intégrité et de cohérence des données,Parce queRDBIl s'est peut - être arrêté à la dernière sauvegarde.
  2. Mémoire utilisée pour la sauvegarde,Parce queRedis Un sous - processus est créé indépendamment au moment de la sauvegarde,Écrire des données dans un fichier temporaire(À ce moment - là, les données en mémoire sont deux fois plus élevées),Enfin, remplacer le fichier temporaire par le fichier de sauvegarde précédent.
  3. Parce queRDBC'est parforkSous - processus pour aider à la persistance des données,Donc,,Si l'ensemble de données est plus grand,Cela pourrait entraîner l'arrêt du service sur l'ensemble du serveur pendant des centaines de millisecondes,Même si1Secondes.(Le processus principal est utilisé pour écrire et écraser).

RDBAvecAOFCritères de sélection des deux(Bien qu'il n'ait pas encore été ditAOF,Popularisation anticipée)

  • Si le système est prêt à sacrifier certaines performances,En échange d'une plus grande cohérence du cache(aof)

  • Ou être prêt à écrire fréquemment,Ne pas activer la sauvegarde en échange d'une meilleure performance,À exécuter manuellementsaveQuand,Encore une sauvegarde(rdb).

RedisAutoriser l'ouverture simultanéeAOFEtRDB,Assure la sécurité des données et facilite les opérations de sauvegarde.Redémarrer maintenantRedisAprèsRedisSera utiliséAOFFichier pour récupérer les données,Parce queAOFLa persistance du mode peut perdre moins de données.

Résumé

  • Redis Par défautRDBMode de persistance,Dans l'intervalle de temps spécifié,Effectuer un nombre spécifié d'opérations d'écriture,Écrivez les données de la mémoire sur le disque.

  • RDB La persistance convient à la récupération massive des données, mais elle est moins cohérente et complète.

  • Redis Ouverture manuelle requiseAOFMode de persistance,La valeur par défaut est d'ajouter le Journal des opérations d'écriture àAOFDans le document.

Alors...RedisIl est plus raisonnable de choisir d'effectuer la persistance et la récupération des données en pleine nuit.

版权声明
本文为[Tarzan d'Ali]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915073252813u.html

  1. 国内一线互联网公司面试题汇总,2021年大厂Java岗面试必问,
  2. 啃完吃透保你涨薪5K,熬夜整理小米Java面试题,
  3. 和字节跳动大佬的技术面谈,Redis成神之路电子版教程已问世,
  4. Le terme professionnel le plus complet de l'histoire des micro - services interview 50 questions, Byte Jumping Java post Classic interview vrai problème,
  5. After using mybatisplus, I haven't written SQL for a long time
  6. [springboot2 starts from 0] how to write a springboot application?
  7. Huawei cloud guassdb (for redis) released a new version, and the two core features were officially unveiled
  8. 和字節跳動大佬的技術面談,Redis成神之路電子版教程已問世,
  9. 啃完吃透保你漲薪5K,熬夜整理小米Java面試題,
  10. Avec l'interview technique du gigolo, le tutoriel électronique redis est sorti.
  11. Après avoir mangé, assurez - vous d'augmenter votre salaire de 5K et de rester debout tard pour trier les questions d'entrevue Java de millet.
  12. Résumé des questions d'entrevue pour les entreprises Internet nationales de première ligne, qui doivent être posées lors de l'entrevue d'emploi Java de la grande usine en 2021,
  13. Le tri des crachats de sang, la force de l'équipe Tencent pour créer le tutoriel d'introduction au printemps,
  14. Java and scala concurrency Fundamentals
  15. Analysis of java thread source code based on Hotspot
  16. 國內一線互聯網公司面試題匯總,2021年大廠Java崗面試必問,
  17. Introduction au module de contrôle de Connexion MySQL
  18. 大厂高级测试面试题,Java面试基础技能罗列,
  19. Comprendre l'architecture sous - jacente d'InnoDB en exécutant une instruction
  20. Chargeur de classe 1 Tomcat
  21. 小白也能看懂的dubbo3应用级服务发现详解
  22. SpringBoot异步使用@Async原理及线程池配置
  23. Questions d'entrevue de test avancé de Dachang, liste des compétences de base de l'entrevue Java,
  24. SpringBoot异步使用@Async原理及線程池配置
  25. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  26. Détails de la découverte du Service d'application Dubbo 3 que Xiaobai peut également comprendre
  27. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  28. 如何强大且优雅的搞定Linux文件系统,算法题 JVM,
  29. 太牛了,阿里P7架构师带你看透maven的来龙去脉,
  30. Oracle central et Oracle décentralisé
  31. java JavaBean
  32. Java wrapper type
  33. Java super keyword
  34. Java static keyword
  35. Java this keyword
  36. Java interface
  37. 太牛了,阿裏P7架構師帶你看透maven的來龍去脈,
  38. C'est génial, l'architecte Ali p7 vous montre à travers Maven.
  39. Comment traiter le système de fichiers Linux avec puissance et élégance, algorithme JVM,
  40. Java + SSM Social Insurance Pension System for Computer Graduation Design
  41. Usage of Java scanner
  42. Java inheritance
  43. Java method review
  44. java JVM
  45. Java Basics
  46. Java file operation object IO stream
  47. Java console reads multi character input and output
  48. Java simple array sorting
  49. In addition to MySQL master-slave, you have another choice, Galera
  50. Configuration standard dockerfile et docker-composer.yml
  51. 字节大神强推千页PDF学习笔记,2021Java开发学习路线,
  52. 字节大牛耗时八个月又一力作,靠这份Java知识点PDF成功跳槽,
  53. 字节大牛教你手撕Java学习,最新大厂程序员进阶宝典,
  54. Comment l'automne est - il beau?Ces 24 ensembles de modèles d'automne et d'hiver sont grands, minces et vieillissants
  55. 字節大牛教你手撕Java學習,最新大廠程序員進階寶典,
  56. 字節大牛耗時八個月又一力作,靠這份Java知識點PDF成功跳槽,
  57. Byte Bull vous apprend à déchiqueter Java à la main, le dernier dictionnaire avancé des programmeurs de grandes usines,
  58. Byte Bull a pris huit mois à travailler dur et a réussi à changer d'emploi avec ce PDF Java Knowledge point.
  59. Byte God Push 1000 pages PDF Learning notes, 2021 Java Development Learning route,
  60. Five minutes to understand MySQL index push down