Redis xdel

Redis xdel

Streaming de données avec redis

Dans le monde moderne, les données sont générées en continu à partir des plateformes de médias sociaux, des sites Web et des appareils IoT. Par conséquent, le streaming de données est imparable. Un flux peut être identifié comme une série d'événements générés à partir de plusieurs sources simultanées. Par exemple, une station météorologique génère des données météorologiques à un emplacement donné toutes les heures. Chaque événement se compose de données météorologiques telles que la température, l'humidité, la vitesse du vent et la direction.

Les flux Redis aident à capturer, à gérer et à comprendre cette grande quantité de données en cours d'exécution.

Habituellement, les sources qui génèrent des données ou écrivent dans un flux sont appelées producteurs. Chaque producteur ajoute une nouvelle entrée au Stream Redis avec un ID d'événement unique où un événement se compose d'une ou plusieurs paires de valeurs de terrain similaires à un hachage redis. À l'autre bout, les consommateurs lisent le flux pour générer des informations significatives. Les producteurs et les consommateurs n'ont pas besoin de connaître les détails de la mise en œuvre de chacun, ce qui rend les flux Redis plus robustes.

Redis Stream Entrées et nœuds macro

Le type de flux redis est basé sur des structures de données Radix-Tree largement utilisées. Habituellement, un arbre radix se compose de plusieurs nœuds macro où un nœud macro peut stocker plusieurs entrées de flux. Étant donné que l'arbre Radix est un arbre préfixe optimisé par la mémoire, les flux Redis peuvent être utilisés avec une faible consommation de mémoire. De plus, les arbres radix sous-jacents permettent aux flux d'accéder à des données au hasard ou dans une plage spécifiée à une efficacité plus élevée.

La commande XADD ajoute une nouvelle entrée à un nœud macro dans le flux. Lorsque vous ajoutez une entrée, c'est immuable. Par conséquent, il est appelé une structure de données uniquement.

La commande xdel

Dans certains cas, le maintien de millions de données historiques de flux peut ne pas en valoir la peine en raison des expirations de données. Par conséquent, Redis Streams prend en charge la suppression des entrées de la structure des données et libérez une certaine mémoire. Nous pouvons utiliser la commande xdel pour supprimer une entrée d'un flux spécifié.

Syntaxe:

Xdel [entry_id…]
  • stream_key: La clé redis est utilisée pour identifier un flux unique.
  • entrée_id: Un flux peut avoir plusieurs entrées qui appartiennent à plusieurs nœuds macro. Le «entry_id» est l'identifiant unique pour identifier une entrée.

La commande xdel accepte plusieurs entrées. Par conséquent, vous pouvez supprimer plusieurs entrées par commande. Cette commande renvoie le nombre des entrées de flux supprimées. Chaque fois que l'entrée donnée n'existe pas dans un flux, le nombre retourné est inférieur au nombre d'ID spécifié.

Mécanisme de suppression de l'entrée du flux redis

La commande xdel ne vide pas tout de suite les entrées du flux. Au lieu de cela, il marque l'entrée comme supprimé en premier. Par conséquent, l'entrée du flux continuera d'utiliser la mémoire allouée. La mémoire sera publiée lorsque toutes les entrées appartenant à un nœud macro ont été marquées supprimées. Il obligerait le serveur Redis à libérer la mémoire de ce nœud macro.

Exemple 1: supprimer la saisie des données météorologiques d'un flux

Créons d'abord un flux pour stocker les données météorologiques dans la ville de San-Francisco à l'aide de la commande XADD. Supposons que les capteurs produisent des données quotidiennement à midi. Par conséquent, nous ajouterons des données pendant trois jours dans cet exemple.

XADD SANFRANCISCOWETERATER * TEMP 18.4 vent 12 Humidité 67
XADD SANFRANCISCOWETERATER * TEMP 12.6 vent 5 humidité 34
Xadd sanfranciscoweather * temp 5 vent 1 humidité 23

Supposons que la première entrée vient du mois dernier, et nous n'avons pas besoin de suivre les données du mois précédent.

Par conséquent, nous pouvons utiliser la commande xdel pour supprimer la première entrée avec l'ID 1656493771190-0.

Xdel Sanfranciscoweather 1656493771190-0

La commande xdel a renvoyé l'entier 1, ce qui signifie qu'une seule entrée a été supprimée du flux.

Utilisons la commande xRange pour lire le flux et vérifions que l'ID d'entrée 1656493771190-0 a été marqué comme supprimé.

XRange Sanfranciscoweather - +

Comme prévu, seules les deux dernières entrées sont disponibles et la première entrée a été supprimée.

Exemple 2: Supprimer plusieurs entrées météorologiques d'un flux

Disons que nous devons supprimer plusieurs entrées d'un flux simultanément. La commande xdel le prend en charge. Vous pouvez spécifier les ID d'entrée comme indiqué dans les éléments suivants.

Nous supprimerons les deux inscriptions restantes du flux de Sanfranciscoweather que nous avons créé dans l'exemple précédent. Les 1656493789125-0 et 1656493802770-0 sont les identifiants des deux autres entrées.

Xdel Sanfranciscoweather 1656493789125-0 1656493802770-0

Comme prévu, la valeur de retour de commande est 2, qui indique que deux entrées ont été supprimées.

Lisons le flux

Le flux de Sanfranciscoweather est vide.

Conclusion

Les flux Redis peuvent être identifiés comme une série d'événements produits par des sources simultanées. Un flux peut contenir plusieurs entrées où chaque entrée a une pièce d'identité unique et se compose de paires de valeurs sur le terrain. Les flux Redis sont basés sur la structure des données Radix Tree, ce qui les rend très efficaces et optimisées par la mémoire. Les entrées ajoutées à un flux peuvent être supprimées à l'aide de la commande redis xdel. Cette commande marque l'entrée comme supprimée au lieu de vider l'entrée et de libérer la mémoire. Il récupère la mémoire lorsque toutes les entrées d'un nœud macro sont marquées comme supprimées.