No existe una forma sencilla de eliminar entradas anteriores en función del TTL/edad. Puede usar una combinación de XTRIM/XDEL
con otros comandos para recortar la transmisión.
Veamos cómo podemos usar XTRIM
Corriente XTRIM MAXLEN ~ TAMAÑO
XTRIM recorta el flujo a un número determinado de elementos, expulsando los elementos más antiguos (elementos con ID más bajos) si es necesario.
Generas el tamaño de transmisión todos los días o periódicamente según tu política de eliminación y lo almacenas en algún lugar usando XLEN
comando
Ejecute un trabajo periódico que llame a XTRIM como
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
Por ejemplo, ayer el tamaño de la transmisión era 500, ahora es 600, entonces necesitamos eliminar 500 entradas para que podamos ejecutar
XTRIM x-stream MAXLEN ~ 100
Puede usar diferentes políticas para la eliminación, por ejemplo, diariamente, semanalmente, dos veces por semana, etc.
ID de transmisión XDEL [ID...]
Elimina las entradas especificadas de una secuencia y devuelve el número de entradas eliminadas, que puede ser diferente del número de ID pasados al comando en caso de que no existan ciertos ID.
Entonces, lo que puede hacer es que cada vez que el Servicio B consuma el evento, el propio servicio puede eliminar la entrada de flujo ya que el servicio B conoce el ID de flujo, pero esto no funcionará tan pronto como comience a usar el grupo de consumidores. Por lo tanto, recomendaría usar el conjunto de Redis o el mapa de Redis para realizar un seguimiento de los ID de flujo de reconocimiento y ejecutar un trabajo de barrido periódico para limpiar el flujo.
Por ejemplo
El servicio A envía un elemento de flujo con ID1 al servicio B. El servicio B reconoce el elemento de flujo después de consumir los elementos en mapack_stream ={ID1:true}, puede rastrear otros datos, p. cuenta en el caso del grupo de consumidores.
Un trabajo de barrido se ejecutaría periódicamente como a la 1 a. m. todos los días que lee todos los elementos de ack_stream y filtra todos los elementos que requieren eliminación. Ahora puedes llamar a XDEL
comandos en lote con el conjunto de ID de flujo.