Qu'est-ce qu'un groupe de consommateurs dans Redis Streams?
Les groupes de consommateurs résolvent le problème de la duplication des messages en permettant à plusieurs consommateurs de collaborer à la lecture du même flux de données. 1. Le groupe de consommateurs garantit que chaque message n'est traité qu'une seule fois par un consommateur du groupe; 2. Le consommateur peut confirmer qu'il est traité avec succès et que les messages non confirmés peuvent être réaffectés; 3. Utilisez Xgroup Create pour créer un groupe, XReadGroup lit le message et le processus de confirmation Xack est terminé; 4. Les messages non confirmés sont stockés dans la liste des PEL et peuvent être visualisés via XPending ou transférés au Xclaim.
Un groupe de consommateurs dans Redis Streams est un moyen d'organiser plusieurs consommateurs afin qu'ils puissent travailler ensemble en lisant des données du même flux, sans se précipiter sur les orteils les uns des autres. Pensez-y comme une équipe travaillant sur le traitement des tâches à partir d'une liste de tâches partagée - chaque personne (consommateur) prend une tâche et y travaille indépendamment.
Quel problème résout un groupe de consommateurs?
Sans groupes de consommateurs, si vous avez plusieurs consommateurs qui lisent le même flux, ils recevront tous les mêmes messages. Ce n'est pas idéal si vous voulez diviser la charge de travail - imaginez trois personnes qui font exactement la même tâche en même temps.
Avec un groupe de consommateurs:
- Chaque message du flux n'est traité qu'une seule fois par un consommateur du groupe.
- Les consommateurs peuvent reconnaître le traitement réussi des messages.
- Si quelque chose ne va pas ou si un consommateur s'écrase, les messages non reconnus peuvent être réaffectés.
Cela rend les groupes de consommateurs parfaits pour construire des systèmes de traitement des messages fiables et évolutifs.
Comment fonctionnent les groupes de consommateurs dans la pratique?
Lorsque vous utilisez un groupe de consommateurs, il y a quelques concepts clés à comprendre:
- Stream : la source des données.
- Groupe : un groupe nommé de consommateurs.
- Consommateur : un processus individuel ou un client qui lit les messages du flux dans le cadre d'un groupe.
- Liste des entrées en attente (PEL) : pistes quels messages ont été livrés au consommateur mais n'ont pas encore été reconnus.
Voici un flux simplifié:
- Un consommateur du groupe lit un message à l'aide de
XREADGROUP
. - Le message est marqué comme étant en cours.
- Une fois le consommateur terminé le traitement, il envoie un
XACK
pour confirmer l'achèvement. - Si le message n'est pas reconnu dans un certain temps, il peut être livré à un autre consommateur.
Comment créer et utiliser un groupe de consommateurs
Pour commencer par les groupes de consommateurs, vous devez d'abord créer un groupe associé à un flux à l'aide de la commande XGROUP CREATE
. Voici comment:
Xgroup crée mystream mygroup $
Le symbole $
signifie que le groupe commence à lire à partir du dernier message. Si vous souhaitez également traiter tous les messages existants, omettez le $
.
Une fois le groupe existe, un consommateur peut commencer à tirer des messages:
XreadGroup Group MyGroup Consumer1 Count 1 Streams MyStream>
Cela indique à Redis de donner jusqu'à 1 message non transformé de mystream
à consumer1
dans le groupe mygroup
.
Après le traitement, le consommateur doit envoyer:
Xack mystream mygroup <sessage-id>
Cela supprime le message de la liste en attente, disant à Redis qu'il avait été traité avec succès.
Choses à surveiller
Il y a quelques gotchas lorsque vous travaillez avec des groupes de consommateurs:
- Les messages non reconnus restent dans le PEL jusqu'à confirmer. Vous pouvez les vérifier avec
XPENDING
. - Les consommateurs peuvent s'écraser , laissant les messages sans rapport. Utilisez
XCLAIM
pour déplacer ces messages vers un autre consommateur. - Les noms de consommateurs n'ont pas besoin d'être uniques, mais cela aide à suivre qui fait quoi.
- La rétention des messages dépend de votre cas d'utilisation - Redis ne supprimera pas automatiquement les messages à moins que vous ne définissez une stratégie.
Par exemple, si vous déboguez ou récupérez, cela est utile:
XPending mystream mygroup
Il montre combien de messages attendent toujours d'être reconnus, ainsi que des détails comme quel consommateur les a et depuis combien de temps ils ont été en attente.
Ainsi, bien que les groupes de consommateurs gèrent la majeure partie de la coordination, vous devez toujours gérer vous-même des remerciements et des tentatives possibles.
Fondamentalement, c'est tout.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Exécuter Redis avec Docker sans l'installer sur l'hôte, il peut être rapidement démarré via la commande dockerrun; il peut personnaliser les fichiers de configuration et les monter pour implémenter des politiques de mémoire et d'autres paramètres; Il peut persister les données en nommant le volume redis-data; Il est recommandé d'utiliser DockerCose pour faciliter le déploiement et la maintenance de l'environnement de développement.

Utilisez la commande SCAN pour coopérer avec un link pour supprimer en toute sécurité les touches qui correspondent aux modèles dans Redis. Tout d'abord, utilisez Scan0MatchPatternCount to Batch Obtient le nom de clé pour éviter le blocage; Ensuite, utilisez un link asynchrone pour améliorer les performances. Il est recommandé d'utiliser Redis-Cli--Scan - Pattern'pattern '| xargsredis-Cliunlink pour obtenir une suppression efficace sur la ligne de commande et interdire l'utilisation de la commande Keys dans des environnements de production.

UsebgsaveformanualorConfiguresAavepointsForAutomMerdbSnapshotStobackupredis; 2.locateTheDump.rdbfileviaconfigandCopyitsECurely; 3.Torestore, Stopredis, remplaceTheRDBfile, AssurezProperperMissions, redémarrer, et GreredleaFinable

Ajoutez d'abord les dépendances de SpringDataredis, puis définissez les informations de connexion Redis dans le fichier de configuration, puis activez le cache via @EnableCaching et utilisez des annotations de cache, et enfin fonctionnez des données via Redetemplate ou StringRedistemplate pour réaliser le cache, le stockage de session ou l'accès aux données à grande vitesse.

UseflushdbtoClearTheCurrentDatabaseorflushallForAllDatabases; modes d'ORSYNC (blocage) BothSupportAsync (arrière-plan), avec AsyncpreferreDinProductionToAvoidlatence.

Le choix d'un modèle de persistance nécessite des compromis en fonction des exigences d'application, du comportement de charge et du type de données. Les modèles communs incluent la mémoire uniquement (rapide mais non durable), le stockage du disque (lent mais persistant), le mode hybride (à la fois la vitesse et durable) et l'écriture-pré-log (persistance élevée). Si vous traitez les données clés, vous devez choisir une base de données WAL ou ACID; Si vous pouvez tolérer une petite quantité de perte de données, vous pouvez choisir une mémoire ou un modèle hybride. Dans le même temps, considérons la complexité du fonctionnement et de la maintenance, telles que les environnements cloud, vous devez choisir une bonne solution intégrée. Les erreurs courantes doivent être évitées, comme le traitement par erreur des instantanés comme des garanties durables, en ignorant les tests de récupération des accidents, la fréquence de synchronisation sans tir, etc. En bref, il est essentiel de clarifier les priorités et d'effectuer des tests de scénario d'exception.

Hyperloglog fournit une méthode d'estimation de nombre unique et rapide et rapide dans Redis via les commandes PFADD et PFCount. 1. Hyperloglog est un algorithme de probabilité utilisé pour estimer le nombre d'éléments différents dans l'ensemble de données. Il ne nécessite qu'une petite quantité de mémoire fixe pour traiter les ensembles de données à grande échelle. Il convient au suivi des visiteurs indépendants ou des requêtes de recherche haute fréquence et d'autres scénarios; 2. PFADD est utilisé pour ajouter des éléments à Hyperloglog, et PfCount renvoie la valeur d'estimation de l'élément unique dans une ou plusieurs structures; 3. Utiliser des noms de clés significatifs, l'ajout de valeurs de chaîne directement et la fusion de plusieurs HLL pour éviter les calculs répétés sont les meilleures pratiques pour l'utilisation de PFADD et PFCount; 4. Hyperlo

L'installation de redis peut être effectuée via APT ou du code source, et APT est plus simple; 2. Mettez à jour l'index du package et installez Redis-Server; 3. Démarrer et activer le star de l'auto-mise à pied; 4. Utilisez Redis-Cliping pour tester Pong; 5. Fichiers de configuration facultatifs pour ajuster les liaisons, les mots de passe, etc.; 6. Redémarrez le service et complétez l'installation.
