Table des matières
RDB (par défaut)
Le moment du déclenchement de l'instantané
Diagramme schématique
Avantages et inconvénients de RDB
Méthode AOF
Méthode de configuration d'AOF
缓存追加
文件写入和保存
AOF的文件优化
AOF文件优化原理
重写过程分析(需要保证从写的操作是绝对安全的)
Maison base de données Redis Explorez les principes de persistance de Redis

Explorez les principes de persistance de Redis

Feb 22, 2020 pm 04:18 PM
aof rdb redis

Explorez les principes de persistance de Redis

Exploration approfondie du principe de persistance de Redis

Redis est une base de données en mémoire Dans l'ordre. pour assurer la persistance des données, redis Fournit deux méthodes de persistance, RDB et AOF,

Redis est une base de données en mémoire Afin d'assurer la persistance des données, redis. fournit deux méthodes de persistance, RDB et AOF , examinons séparément les principes de mise en œuvre de ces deux méthodes de persistance.

RDB (par défaut)

RDB est complété via des instantanés Lorsque certaines conditions sont remplies, redis conservera automatiquement les données de la mémoire sur le disque.

Le moment du déclenchement de l'instantané

  • est conforme aux règles d'instantané configurées personnalisées. (Configuré dans redis.conf, détaillé ci-dessous)
  • Exécutez la commande save ou bgsave
  • Exécutez la commande flushall
  • Exécutez l'opération de réplication maître-esclave (en premier fois)

(Recommandation de didacticiel vidéo d'apprentissage gratuit : Tutoriel vidéo MySQL)

Diagramme schématique

Explorez les principes de persistance de Redis

  • Pendant le processus de capture d'instantané, c'est-à-dire le processus de génération de fichiers, le fichier rdb d'origine ne sera pas modifié jusqu'à ce que l'instantané soit généré, l'ancien sera directement remplacé par le nouveau pour garantir. que le fichier rdb Chaque instant est terminé.
  • Nous pouvons sauvegarder les données Redis en sauvegardant régulièrement les fichiers rdb. RDB est un fichier binaire compressé qui prend peu de place et est propice à la transmission

###Règles de configuration des instantanés. save {Combien de secondes} {Combien de données ont été modifiées>

Par exemple : save 100 1 : Dans les 100 secondes, prenez un instantané si au moins une clé est modifiée. save 200 4 : Dans les 200 secondes, à ; minimum 4 Prendre un instantané lorsque la clé est modifiée.

Avantages et inconvénients de RDB

  • Inconvénients : en utilisant RDB pour la persistance, lorsque Redis se ferme soudainement et anormalement, les données après le dernier instantané seront perdues. Cependant, vous pouvez configurer des instantanés automatiques basés sur la combinaison pour réduire la perte de données et garantir qu'elle se situe dans la plage acceptable. Si les données sont plus importantes, vous pouvez utiliser la méthode AOF
  • Avantages : L'utilisation de la méthode RDB peut maximiser les performances de Redis. Pendant le processus d'instantané, nous pouvons voir que le processus principal n'a besoin que de débourser un processus enfant. , et le reste Tout le travail est effectué par le processus enfant et le processus parent n'a pas besoin d'effectuer d'opérations d'E/S disque. Cependant, si l'ensemble de données est volumineux, la duplication du processus enfant prendra beaucoup de temps, ce qui entraînera l'arrêt de Redis de traiter les demandes pendant un certain temps.

Méthode AOF

Par défaut, redis n'active pas AOF (ajouter uniquement un fichier). Après avoir démarré AOF, chaque fois que redis reçoit une commande pour modifier les données redis, il écrira la commande dans le fichier AOF sur le disque dur. Évidemment, ce processus réduira les performances de Redis, mais il est acceptable dans la plupart des cas, en même temps, l'utilisation d'un disque dur plus performant peut améliorer les performances d'AOF

Méthode de configuration d'AOF

# 开启appendonly参数appendonly true# 设置AOF文件位置dir ./# 设置AOF文件名称,默认是appendonly.aofappendfilename appendonly.aof<br/>
Copier après la connexion
<🎜. >Figure de principe

Explorez les principes de persistance de Redis

Protocole RESP

Le client Redis utilise le protocole RESP pour communiquer avec le serveur Redis. Ce protocole est spécialement conçu pour Redis, mais il peut également l'être. utilisé dans d’autres projets CS.

    Symbole d'espacement : rn sous Linux, n sous Windows
  • Chaîne simple commence par '+'
  • Erreurs, commence par '-' Commençant par
  • Type entier Entier, commençant par ':'
  • Grande chaîne commençant par '$'
  • Type de tableau Tableaux, commençant par '*'
AOF Description du principe

redis conserve les données en enregistrant toutes les commandes d'écriture dans des fichiers AOF. Le processus d'enregistrement des commandes dans les fichiers AOF peut être divisé en trois étapes :

    Propagation des commandes
  • Ajout du cache
  • Écriture et sauvegarde des fichiers
Propagation des commandes

redis enverra la commande exécutée, les paramètres de commande, le numéro de grille des paramètres de commande et d'autres contenus au programme AOF. Lorsque le client Redis exécute une commande, il envoie le texte du protocole à Redis via la connexion. Une fois que Redis a reçu le texte du protocole, il sélectionne la fonction de commande appropriée en fonction du contenu et convertit le texte du protocole en un objet chaîne Redis. La fonction est exécutée, après cela, envoyez les paramètres de commande au programme AOF.

缓存追加

AOF程序接收到命令参数之后,会将其从字符串对象转换成协议内容,再将协议内容追加到AOF缓存中。AOF缓存是在redisServer结构的aof_buf中,新的内容会被追加到aof_buf末尾。aof_buf保持着所有未被写入到AOF文件的协议文本。

文件写入和保存

将AOF缓存内容写入到AOF文件,并保持到磁盘。 当服务器的常规函数被执行,或者事件处理器被执行的时候,flushAppendOnlyFile函数将会被执行。会有以下两个过程。

  • WRITE:将AOF缓存中的内容写入到AOF文件
  • SAVE:调用fsync或者fdatasync函数,将AOF文件保存到磁盘中

AOF一共有三种保存模式

  • AOF_FSYNC_NO:不保存。在这种模式下,每次调用flushAppendOnlyFile函数,write会被执行,而save会被忽略。而save只有在以下三种条件下会触发,redis关闭,aof功能关闭,系统的写缓存被刷新(可能是缓存满了,或者定期执行保持操作)。这三种情况下执行save操作会引起redis主线程的阻塞。
  • AOF_FSYNC_EVERYSEC(默认):每秒保存一次。save每秒被执行一次,但是save由后台子线程完成,不会导致redis主线程阻塞。
  • AOF_FSYNC_ALWAYS:每执行一个命令保存一次。这种情况下,每执行一个命令write和save都会被执行,而且save操作由主线程完成,会导致redis的阻塞。安全性较高,性能较差,因此不推荐使用。

AOF的文件优化

Redis可以在AOF文件过大的时候,在后台(子进程)对AOF文件进行重写。重写之后的新文件,包含恢复当前数据集所需的最小命令集合。重写,并不会对AOF文件进行读取和写入,针对的是数据库中的当前键。

优化前set s1 1set s1 2set s1 3优化后set s1 3<br/>
Copier après la connexion

AOF文件优化原理

AOF的重写是通过子进程实现的,因此,主线程是继续工作的,有可能对新的数据进行修改,有可能会导致数据库的数据和重写之后的数据不一致。redis通过增加一个AOF重写缓存来解决这个问题,当fork出子进程之后,新的命令不仅会追加到现有的AOF文件中,还会添加一份数据到这个缓存当中。

Explorez les principes de persistance de Redis

重写过程分析(需要保证从写的操作是绝对安全的)

Redis创建新的AOF文件之后,会继续将命令添加到原有的AOF文件中,即使数据库突然宕机了,原有的AOF文件和文件内容也不会有损失。而当新的AOF文件创建完毕之后,会直接把旧的替换掉,往新的AOF文件中添加命令。

当子进程在进行重写时,主进程会完成下列工作

  • 处理请求,将新的命令继续添加到AOF文件中,同时将命令添加到AOF重写缓存中。保证数据的一致行,避免出现数据丢失。
  • 当子进程重写完毕之后会向主进程发送一个完成信号,这时主进程会把重写缓存中的内容添加到新的AOF文件中,这样新的AOF文件,数据库,旧的AOF文件的内容就完全一致了。然后对新的AOF文件改名,覆盖原有的AOF文件。

这样程序就完成了新旧AOF文件的替换工作。而当处理完成之后,主进程就会继续接受请求。整个重写过程中只有最后的缓存写入和改名替换的操作会导致主进程阻塞,其他时候不会影响redis的正常工作,把AOF重写对redis的性能影响降到最低。

优化触发条件

#当前的AOF文件超过上次重写时AOF文件大小百分几的时候进行重写,如果没有重写过,则以启动时AOF文件的大小为准auto-aof-rewrite-percentage 100#限制允许重写的最小的AOF文件,也就是文件小于这个值的时候不需要进行重写优化auto-aof-rewrite-min-size 64mb<br/>
Copier après la connexion

本文转载自:https://database.51cto.com/art/202002/610825.htm

更多redis知识请关注redis数据库教程栏目。 

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment construire le mode Cluster Redis Comment construire le mode Cluster Redis Apr 10, 2025 pm 10:15 PM

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment utiliser la commande redis Comment utiliser la commande redis Apr 10, 2025 pm 08:45 PM

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

Comment effacer les données redis Comment effacer les données redis Apr 10, 2025 pm 10:06 PM

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Comment lire le code source de Redis Comment lire le code source de Redis Apr 10, 2025 pm 08:27 PM

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

Comment utiliser un seul fileté redis Comment utiliser un seul fileté redis Apr 10, 2025 pm 07:12 PM

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Comment afficher toutes les clés dans Redis Comment afficher toutes les clés dans Redis Apr 10, 2025 pm 07:15 PM

Pour afficher toutes les touches dans Redis, il existe trois façons: utilisez la commande Keys pour retourner toutes les clés qui correspondent au modèle spécifié; Utilisez la commande SCAN pour itérer les touches et renvoyez un ensemble de clés; Utilisez la commande info pour obtenir le nombre total de clés.

Comment démarrer le serveur avec redis Comment démarrer le serveur avec redis Apr 10, 2025 pm 08:12 PM

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

See all articles