Maison >base de données >Redis >Une brève analyse des principes et des lacunes d'AOF dans Redis

Une brève analyse des principes et des lacunes d'AOF dans Redis

青灯夜游
青灯夜游avant
2021-11-10 10:26:272644parcourir

Cet article vous amènera à comprendre la persistance d'AOF dans Redis, à présenter le principe d'AOF et les lacunes d'AOF. J'espère qu'il sera utile à tout le monde !

Une brève analyse des principes et des lacunes d'AOF dans Redis

AOF

Une brève analyse des principes et des lacunes dAOF dans Redis

  • Ci-dessus, nous avons mentionné que l'une des méthodes de persistance dans rRedis est RDBRedis中的一种持久化方式就是RDB
    • 此文我们来讲另一种实现方式那就是AOF

    • AOF是通过只记录Redis写入命令的追加式日志文件

    • AOF日志存储的因为是顺序指令,所以在Redis宕机后,内部"重走一遍老路",就可以达到恢复数据的目的

【相关推荐:Redis视频教程

AOF原理

  • 每次我们执行写入命令的时候,Redis都会把命令追加到AOF文件里面
    • 实际是将内容写到内存的一个缓存汇总

    • 所以Redis需要实时的去调用Linux提供的fsync函数每次将制定文件从内核缓存写到磁盘

    • 因为如果实时的去调用函数是非常我们也可以通过改变配置参数来调整调用fsync函数的频率

重写

  • 如果一直追加AOF文件,日志会变得越来越大
    • 所以Redis内部实现了「重写」,用来压缩文件
    • 首先因为很多的key-value早就已经国企,或者很多值不断被更新,那么日志还存这些无用的数据显然是可以进行优化的
    • 所以创建一个子进程对内存进行遍历
    • 遍历成一个新的文件日志,所以实现了只有最新的值才需要存储在AOF日志中
    • 我们可以使用下图的命令来开启重写,当然也可以设置成自动执行AOF

Une brève analyse des principes et des lacunes dAOF dans Redis

AOF

Dans cet article, nous allons parlez d'une autre méthode d'implémentation, à savoir AOF
  • AOF est un fichier journal en annexe uniquement qui enregistre uniquement les commandes d'écriture Redis
  • AOF stocke les journaux
  • instructions séquentielles
, donc après la panne de Redis, l'objectif de la récupération des données peut être atteint en "revenant sur l'ancien chemin" en interne

🎜🎜【Recommandations associées : Tutoriel vidéo Redis🎜】🎜

🎜Principe AOF🎜🎜🎜🎜Chaque fois que nous exécutons une commande d'écriture, Redis ajoutera la commande au fichier AOF🎜🎜🎜 Il s'agit en fait d'un résumé du cache qui écrit le contenu dans la mémoire🎜🎜🎜🎜, donc Redis doit appeler la fonction fsync fournie par Linux en temps réel à chaque fois time Écrivez le fichier spécifié du cache du noyau sur le disque🎜🎜🎜🎜Car s'il est très important d'appeler la fonction en temps réel, on peut également ajuster la fréquence d'appel de la fonction fsync en modifiant les paramètres de configuration🎜🎜🎜🎜🎜

🎜Rewrite🎜

🎜🎜Si vous continuez à ajouter des fichiers AOF, le journal deviendra de plus en plus gros 🎜🎜Donc Rediscode> implémente en interne la "réécriture" pour compresser les fichiers🎜🎜Tout d'abord, parce que de nombreuses valeur-clé appartiennent déjà à l'État, ou de nombreuses valeurs sont constamment mis à jour, les journaux stockent toujours ces données inutiles. Évidemment, cela peut être optimisé🎜🎜Créez donc un sous-processus pour parcourir la mémoire🎜🎜Parcourez dans un nouveau fichier journal, de sorte que seule la dernière valeur doit être stockée dans le AOF log🎜🎜 Nous pouvons utiliser la commande ci-dessous pour activer la réécriture, bien sûr, nous pouvons également la configurer pour qu'elle exécute automatiquement AOF🎜🎜🎜🎜🎜Une brève analyse des principes et des lacunes dAOF dans Redis🎜

🎜AOFInconvénients 🎜🎜🎜🎜🎜Parcourir toute la mémoire à chaque fois entraînera une surcharge de performances supplémentaire pour le système🎜🎜🎜🎜Récupérer des données à chaque fois est un long processus et l'écriture à partir du le noyau sur le disque consomme à chaque fois des performances d'E/S🎜 🎜🎜🎜Pour plus de connaissances sur la programmation, veuillez visiter : 🎜Introduction à la programmation🎜 ! ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer