Il n'y a pas de moyen simple de supprimer les anciennes entrées en fonction de la durée de vie/de l'âge. Vous pouvez utiliser une combinaison de XTRIM/XDEL
avec d'autres commandes pour couper le flux.
Voyons comment nous pouvons utiliser XTRIM
Flux XTRIM MAXLEN ~ SIZE
XTRIM limite le flux à un nombre donné d'éléments, supprimant les éléments plus anciens (éléments avec des ID inférieurs) si nécessaire.
Vous générez la taille du flux tous les jours ou périodiquement en fonction de votre politique de suppression et la stockez quelque part à l'aide de XLEN
commande
Exécuter une tâche périodique qui appellerait XTRIM en tant que
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
Par exemple, hier, la taille du flux était de 500, maintenant elle est de 600, nous devons supprimer 500 entrées pour pouvoir simplement exécuter
XTRIM x-stream MAXLEN ~ 100
Vous pouvez utiliser différentes politiques de suppression, par exemple quotidiennement, hebdomadairement, deux fois par semaine, etc.
ID de flux XDEL [ID...]
Supprime les entrées spécifiées d'un flux et renvoie le nombre d'entrées supprimées, qui peut être différent du nombre d'ID passés à la commande au cas où certains ID n'existent pas.
Donc, ce que vous pouvez faire, c'est que chaque fois que le service B consomme l'événement, le service lui-même peut supprimer l'entrée de flux car le service B connaît l'ID de flux, mais cela ne fonctionnera pas dès que vous commencerez à utiliser le groupe de consommateurs. Je dirais donc d'utiliser Redis set ou Redis map pour suivre les identifiants de flux de reconnaissance et exécuter une tâche de balayage périodique pour nettoyer le flux.
Par exemple
Le service A envoie un élément de flux avec ID1 au service BService B reconnaît l'élément de flux après avoir consommé les éléments dans le mappack_stream ={ ID1:true }, vous pouvez suivre d'autres données, par ex. compter dans le cas du groupe de consommateurs.
Un travail de balayage s'exécuterait périodiquement comme 1 h du matin tous les jours qui lit tous les éléments de ack_stream et filtre tous les éléments qui nécessitent une suppression. Vous pouvez maintenant appeler XDEL
commandes par lots avec l'ensemble des identifiants de flux.