Maison  >  Article  >  base de données  >  Expliquer la démonstration de publication et d'abonnement Redis, la démonstration de transaction et la persistance

Expliquer la démonstration de publication et d'abonnement Redis, la démonstration de transaction et la persistance

coldplay.xixi
coldplay.xixiavant
2021-02-23 09:54:222077parcourir

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
  • 2. Démonstration de la publication et de l'abonnement Redis
  • 3 Transactions dans Redis
  • 4. .Fonction de transfert -Démonstration de transaction Redis
  • 5. Version améliorée de la fonction de transfert -watch
  • 6. Gestion des erreurs de transaction
    • Erreur de logique métier
    • Erreur de syntaxe
  • 7. Persistance Redis
    • Persistance RDB
    • Persistance AOF

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.

Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance

Scénarios d'application :

  • , tels que le chat instantané ordinaire, le chat de groupe et d'autres fonctions. 构建实时消息系统
  • ②Dans un site de blog, il y a n nombre de fans qui se sont abonnés à vous. Lorsque vous publiez un nouvel article, vous pouvez
  • le donner à vos fans. 推送消息
  • . 微信公众号模式

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 ...]

  • Canal de publication :
  • psubscribe pattern1 [pattern2 ...]
    Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance Envoyer des informations au canal spécifié.

  • Se désabonner d'une chaîne : publish channel message
    Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance
    Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance 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 Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance

  • Les transactions Redis peuvent exécuter plusieurs commandes à la fois (les chaîner dans l'ordre Exécution linéisée, aucune autre commande ne sera insérée lors de l'exécution, aucun blocage n'est autorisé)

Scénarios d'application de transaction :

Vente Flash de produit

    Transfert
  • Deux fonctionnalités :
Redis combinera toutes les séquences de commandes dans une transaction isation, puis exécutez-les dans l'ordre (si une commande échoue, le reste des commandes sera toujours exécuté)

ne sera pas inséré par d'autres commandes pendant l'exécution, et aucune course supplémentaire n'est autorisée.

    Une transaction passera par les trois étapes suivantes du début à l'exécution :
  • Commandes liées à la transaction :

开始事务、命令入队、执行事务。 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

Exigence : Fonction de transfert, A transfère 50 yuans vers le compte B.

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.

  • 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
  • .
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.

multiJusqu'à ce qu'Exec soit entré, Redis exécutera les commandes de la file d'attente de commandes précédente dans l'ordre. exec

    Avant d'exécuter exec, si vous constatez qu'il y a un problème avec la commande ajoutée, vous pouvez utiliser la commande
  • pour abandonner l'opération de file d'attente, similaire à l'opération de restauration dans MySQL.

  • Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance5. Version améliorée de la fonction de transfert - regarder
    discard
Exigence : Un compte fonctionne au sein d'une transaction, avant de soumettre la transaction, un autre processus. opère sur le compte.

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.

Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance

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.
Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance

Erreur de syntaxe

Une erreur de syntaxe s'est produite : toutes les files d'attente seront annulées lors de l'exécution.
Expliquer la démonstration de publication et dabonnement Redis, la démonstration de transaction et la persistance

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 :

  • Snapshot enregistre les données très rapidement et restaure les données très rapidement
  • Convient pour la sauvegarde après sinistre

Inconvénients :

  • Les petites machines à mémoire ne conviennent pas. Si le mécanisme RDB répond aux exigences, il prendra des instantanés et occupera de la mémoire.

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 persistance
  • appendfsync 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!

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