Redis xtrim

Redis xtrim

Détails de bas niveau des flux Redis

Redis Streams est une structure de données uniquement en forme qui fournit un ensemble d'opérations de lecture et d'insertion très efficaces avec un mécanisme de stockage économe en mémoire. En interne, les flux Redis utilisent une structure de données d'arbre Radix qui est un arbre optimisé dans l'espace avec une efficacité de mémoire élevée.

Redis Streams Stockez les données comme une liste des entrées où chaque entrée se compose de paires de valeurs clés. À un niveau bas, ces entrées sont emballées en macro-nodes, comme indiqué dans ce qui suit.

Dans cet article, nous nous concentrons sur l'élimination des entrées de flux à l'aide de la commande xtrim, et le concept mentionné ci-dessus affecte étroitement l'efficacité de l'opération de suppression. Habituellement, la suppression de l'entrée de flux redis est très efficace si cela se fait au niveau macro-nœud mais pas au niveau d'entrée. Ce mécanisme est mis en œuvre avec la commande xtrim que nous discuterons dans la section suivante.

La commande xtrim

La commande xtrim est utilisée pour couper les entrées d'un flux en fonction d'une valeur de seuil donnée. Le seuil peut être un nombre maximum d'entrées par flux ou un ancien identifiant d'entrée. La commande xtrim accepte le type de seuil comme un argument de commandement. La syntaxe de la commande xtrim est la suivante.

Xtrim stream_key maxlen | Minid [= | ~] threshold_value [limite comptage]

stream_key: La clé du flux redis.

Maxlen: La longueur maximale du ruisseau après les entrées de coupe. Toutes les entrées seront supprimées qui dépassent la longueur du flux, qui est spécifiée par la valeur de seuil. Cet argument est un entier positif.

Minid: L'identifiant de flux minimum qui devrait rester après avoir réduit les entrées. Toutes les entrées seront supprimées qui ont des ID inférieurs au seuil spécifié. Chaque fois que vous spécifiez ce paramètre, le seuil devient un ID de flux.

= opérateur: Lorsque spécifié, une coupe exacte sera effectuée en fonction de la valeur de seuil.

~ opérateur: Lorsqu'il est spécifié, une coupe presque exacte sera effectuée en fonction de la valeur de seuil et de la taille de macro-nœud.

valeur de seuil: La valeur seuil basée sur l'argument Maxlen ou Minid.

Dénombrement: Le nombre maximum d'entrées à supprimer.

Cas d'utilisation 01 - Suppression des entrées de flux en fonction de la longueur maximale

Supposons qu'une entreprise de tourisme maintient un magasin Redis pour garder une trace des informations touristiques. La structure de données Redis Streams a été utilisée pour stocker les informations de chaque touriste à mesure que les paires de valeurs clés. Avec le temps, le flux a grandi et ils prévoient de ne conserver que les 1000 dernières entrées. Ils ont donc identifié la longueur maximale du flux devraient être 1000 à tout moment. La commande xtrim a été utilisée pour y parvenir.

À des fins de démonstration, nous allons d'abord créer un flux avec 10 entrées comme suit. La commande XADD a été utilisée pour effectuer l'insertion.

xadd touristinfo * nom jack country italie familymems 5
xadd touristinfo * nom Harry Country USA FamilyMems 2
xadd touristinfo * nom nikomita country japan familymems 3
xadd touristinfo * nom zakaria country inde familialmems 2
xadd touristinfo * nom redmond country brazil familymems 6
xadd touristinfo * nom nakita country japan familymems 3
xadd touristinfo * Nom Maryjohn Country USA FamilyMems 2
xadd touristinfo * nom liza country italie familymems 5
xadd touristinfo * nom nimshikaa country japan familymems 3
xadd touristinfo * nom nisha country italie familymems 5

Utilisons la commande XRange pour inspecter le Stream Touristinfo comme suit.

XRange touristinfo - +

Sortir:

Comme prévu, les 10 entrées de flux ont été affichées par cette commande.

À des fins de démonstration, nous allons couper le ruisseau où sa longueur maximale serait 5.

xtrim touristinfo maxlen 5

Inspectons à nouveau les entrées de flux avec la commande xRange.

Comme prévu, cinq entrées ont été expulsées du ruisseau, et sa longueur est de 5.

Cas d'utilisation 02 - Suppression des entrées de flux en fonction des ID de flux

Prenons un exemple où une entreprise météorologique garde une trace des informations météorologiques d'un emplacement donné à l'aide de Streams Redis. Maintenant, ils veulent supprimer des entrées plus anciennes qui ne sont plus nécessaires. Nous pouvons utiliser la commande xtrim en utilisant la stratégie MINID, comme indiqué dans ce qui suit.

Tout d'abord, nous créerons un flux appelé WeatherInfo et y ajouterons 5 entrées comme suit.

XADD WeatherInfo * temp 10 Humidité 50
XADD WeatherInfo * Temp 20 Humidité 70
XADD WeatherInfo * Temp 12 Humidité 65
xadd WeatherInfo * temp 15 Humidité 88
XADD WeatherInfo * Temp 18 Humidité 45

Sortir:

Utilisons la commande xtrim pour supprimer les entrées qui ont des ID inférieurs à la valeur de seuil spécifiée.

Xtrim WeatherInfo MINID 1660485503248-0

L'ID minimum spécifié est associé à la troisième entrée. Par conséquent, les entrées après la troisième entrée qui ont des ID inférieures seront supprimées.

Sortir:

Puisque nous n'avons pas spécifié explicitement les arguments = ou ~, la commande utilise l'opérateur = par défaut. Par conséquent, la coupe exacte a été effectuée dans les deux cas d'utilisation. Si vous avez spécifié explicitement l'opérateur ~, une coupe presque exacte sera effectuée, comme indiqué dans ce qui suit.

Comme indiqué dans la figure ci-dessus, la commande xtrim a été utilisée avec l'opérateur ~. Nous demandons à la commande de supprimer toutes les entrées qui dépassent la longueur de 100. Puisque nous ne forcerons pas la commande Xtrim à faire une coupe exacte, elle se concentrera sur l'efficacité de l'opération de coupe. Ainsi, il ne supprimera pas les entrées immédiates qui appartiennent au même macro-nœud. Il conservera les trois prochaines entrées qui sont dans le même macro-nœud et supprimera toutes les macro-nodes après celles. Il donne une quantité considérable d'amélioration des performances que dans l'approche de coupe exacte, ce qui oblige la commande à faire l'effort supplémentaire. La même procédure a lieu lorsque le seuil est basé sur les ID d'entrée.

L'argument limite limite le nombre d'entrées expulsées du flux spécifié, qui peut être utilisé pour gagner un peu plus de performances.

Conclusion

En bref, la commande xtrim est utilisée pour supprimer les entrées de flux en fonction d'une valeur de seuil. Le type de valeur de seuil peut être modifié avec le contexte qui est spécifié à l'aide des arguments de commande Maxlen et MINID. Comme discuté, la coupe peut être effectuée de deux manières où l'opération de coupe considérera le seuil comme une limite exacte ou approximative. Par défaut, la commande utilise l'opérateur = utilisé pour une coupe exacte. Avec l'opérateur ~, vous pouvez faire une coupe approximative comme mentionné dans la section ci-dessus. Dans l'ensemble, l'approche de coupe approximative et l'argument limite vous aident à obtenir un gain de performance considérable avec la commande xtrim.