Redis
 sql >> Base de données >  >> NoSQL >> Redis

Quelles sont les principales différences entre Redis Pub/Sub et Redis Stream ?

Stockage des données

Pub/Sub est une plate-forme d'éditeur/d'abonné, ce n'est pas un stockage de données. Les messages publiés s'évaporent, qu'il y ait ou non un abonné.

Dans Redis Streams, stream est un type de données, une structure de données à part entière. Les messages ou les entrées sont stockés en mémoire et y restent jusqu'à ce qu'il soit ordonné de les supprimer.

Communication synchronisée/asynchrone (Push/Pull)

Pub/Sub est une communication synchrone (push protocole). Toutes les parties doivent être actives en même temps pour pouvoir communiquer. Ici, Redis est un pur courtier de messagerie synchrone.

Les flux Redis permettent à la fois les flux synchrones (XREAD avec BLOCK et le spécial $ L'identification est une push protocole) et la communication asynchrone (régulier XREAD est une attraction protocole). XREAD avec BLOCK ressemble à Pub/Sub, mais avec la possibilité de reprendre en cas de déconnexion sans perdre de messages.

Sémantique de diffusion

Pub/Sub est au plus une fois, c'est-à-dire "lancer et oublier".

Redis Streams permet à la fois Au plus une fois ou Au moins une fois (accusé de réception explicite envoyé par le récepteur)

Mode de blocage pour les consommateurs

Pub/Sub est uniquement en mode blocage. Une fois abonné à un canal, le client est mis en mode abonné et il ne peut pas émettre de commandes (sauf pour [P]SUBSCRIBE , [P]UNSUBSCRIBE , PING et QUIT ), il est devenu en lecture seule.

Redis Streams permet aux consommateurs de lire les messages en mode blocage ou non.

Diffusion

Pub/Sub est uniquement diffusé. Tous les clients actifs reçoivent tous les messages.

Redis Streams permet la diffusion (avec XREAD ), mais également pour fournir un sous-ensemble différent de messages du même flux à de nombreux clients. Cela permet de mettre à l'échelle le traitement des messages, en acheminant différents messages vers différents travailleurs, de manière à ce qu'il ne soit pas possible que le même message soit livré à plusieurs consommateurs. Ce dernier scénario est réalisé avec des groupes de consommateurs .

Les flux Redis offrent de nombreuses autres fonctionnalités, telles que les horodatages, les paires champ-valeur, les plages, etc. Cela ne signifie pas que vous devez toujours opter pour les flux. Si votre cas d'utilisation peut être réalisé avec Pub/Sub, il est alors préférable pour vous d'utiliser Pub/Sub. Avec Streams, vous devez faire attention à l'utilisation de la mémoire.