Maison > Article > base de données > Expliquer la démonstration de publication et d'abonnement Redis, la démonstration de transaction et la persistance
Recommandé (gratuit) : Tutoriel Redis
Répertoire d'articles
1. Introduction à la publication et à l'abonnement Redis
La publication et l'abonnement Redis (pub/sub) est un mode de communication par message : expéditeur (pub ) Envoyez un message et l'abonné (sous) reçoit le message. Les clients Redis peuvent s'abonner à n'importe quel nombre de canaux.Scénarios d'application :
构建实时消息系统
推送消息
微信公众号模式
2. Démonstration de publication et d'abonnement Redis
Syntaxe de publication et d'abonnement Canal d'abonnement :
Abonnement à une ou plusieurs chaînes correspondant à un modèle donné subscribe channel1 [channel2 ...]
psubscribe pattern1 [pattern2 ...]
Envoyer des informations au canal spécifié.
Se désabonner d'une chaîne : publish channel message
Désigne la désinscription d'une chaîne donnée.
Se désabonner de toutes les chaînes d'un mode donné. unsubscribe channel1 [ channel2 ...]
punsubscribe pattern1 [pattern2 ...]
3. Transactions dans Redis
Scénarios d'application de transaction :
Vente Flash de produit
ne sera pas inséré par d'autres commandes pendant l'exécution, et aucune course supplémentaire n'est autorisée.
开始事务、命令入队、执行事务。
Marquer un transaction Le début du bloc.
Exécutez toutes les commandes dans le bloc de transaction. Annulez la transaction et abandonnez l'exécution de toutes les commandes dans le bloc de transaction. multi
Surveiller une (ou plusieurs) clés. Si cette (ou ces) clés sont modifiées par d'autres commandes avant l'exécution de la transaction, la transaction sera interrompue. exec
Annulez la surveillance de toutes les touches par la commande watch. discard
4. Fonction de transfert - Démonstration de transaction Redis watch key
unwatch
A a 80 yuans et B a 10 yuans avant le transfert.
Après le transfert, A a 30 yuans et B a 60 yuans.Commencez par saisir la commande Multi. Les commandes saisies entreront à leur tour dans la file d'attente des commandes, mais ne seront pas exécutées.
- Dans cet exemple, une transaction est démarrée avec
, puis plusieurs commandes sont mises en file d'attente dans la transaction, et enfin la transaction est déclenchée par la commande- .
multi
Jusqu'à ce qu'Exec soit entré, Redis exécutera les commandes de la file d'attente de commandes précédente dans l'ordre. exec
discard
Le transfert ci-dessus n'est pas sécurisé. S'il y a d'autres commandes fonctionnant sur le compte a ou b pendant l'exécution, des lectures fantômes peuvent se produire ; la solution est d'ajouter une commande watch pour surveiller le compte une fois que d'autres commandes fonctionnent sur le compte. a ou b pendant l'exécution de la transaction, le programme signalera directement une erreur et annulera.
Après avoir exécuté la commande watch, si la commande exec
ou discard
est exécutée en premier, il n'est pas nécessaire d'exécuter unwatch
pour annuler la surveillance de la clé . Parce que la commande exec ou throw annulera automatiquement la surveillance.
6. Gestion des erreurs de transaction
Erreur de logique métier
Une erreur de logique métier se produit : seules les erreurs sont signalé La commande ne sera pas exécutée, mais d'autres commandes seront exécutées et ne seront pas annulées.
Erreur de syntaxe
Une erreur de syntaxe s'est produite : toutes les files d'attente seront annulées lors de l'exécution.
7. Persistance Redis
Les données sont stockées en mémoire : efficace, mais les données de la mémoire seront perdues lors de la mise hors tension. .
Les données sont stockées sur le disque dur : la vitesse de lecture et d'écriture est plus lente que celle de la mémoire, mais les données ne seront pas perdues lors de la mise hors tension.
Persistance RDB
RDB est le mécanisme de persistance par défaut de Redis. RDB équivaut à prendre un instantané, qui enregistre un état des données. (Des dizaines de gigaoctets de données peuvent être enregistrés sous forme d'instantanés de plusieurs Ko)
Les instantanés sont la méthode de persistance par défaut. Cette méthode consiste à écrire les données en mémoire dans un fichier binaire sous la forme d'un instantané. Le nom de fichier par défaut est dump.rdb
(qui est stocké dans le fichier redis.conf).
Avantages :
Inconvénients :
Persistance AOF
Étant donné que la méthode d'instantané est effectuée une fois à un certain intervalle, si Redis tombe en panne de manière inattendue, le dernier instantané sera perdu, toutes les modifications. . Si l'application exige qu'aucune modification ne puisse être perdue, la méthode de persistance AOF (Append-Only File) peut être utilisée. La commande
appendonly yes
peut activer la persistance AOF.
Il existe trois manières suivantes (par défaut : fsync une fois par seconde)
appendfsync always
Écrivez sur le disque immédiatement après avoir reçu la commande d'écriture, qui est la plus lente, mais garantit persistance complète appendfsync everysec
Écriture sur le disque une fois par seconde, faisant un bon compromis entre performances et persistanceappendfsync no
pendant Il n'y a aucune garantie Avantages :
AOF a une meilleure persistance que le mode instantané, car lors de l'utilisation du mode de persistance AOF : redis will Chaque commande d'écriture reçue est ajoutée au fichier via la fonction d'écriture (la valeur par défaut est appendonly.aof). Au redémarrage de Redis, le contenu de l'intégralité de la base de données sera reconstruit en mémoire en réexécutant les commandes d'écriture enregistrées dans le fichier.
Inconvénients :
La méthode AOF apporte également un autre problème. Le fichier persistant deviendra de plus en plus gros, occupant le disque dur. Par exemple, si nous appelons la commande incr test 100 fois, les 100 commandes doivent être enregistrées dans le fichier. En fait, 99 d'entre elles sont redondantes.
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!