7 votes

Notification d'expiration de la clé Redis

Existe-t-il un moyen d'avoir des notifications fiables sur l'expiration des clés dans Redis. D'après ce que j'ai compris de la documentation de Redis, la notification de l'expiration de la clé n'est pas fiable dans Redis.

Selon la documentation, étant donné que Redis Pub/Sub est actuellement "fire and forget", il n'y a aucun moyen d'utiliser cette fonction si votre application exige une notification fiable des événements, c'est-à-dire que si votre client Pub/Sub se déconnecte, et se reconnecte plus tard, tous les événements délivrés pendant le temps où le client était déconnecté sont perdus.

Quelqu'un peut-il suggérer un moyen d'avoir une notification fiable de l'expiration d'une clé à travers Redis ou veuillez suggérer une autre base de données ou un mécanisme en Java pour avoir l'expiration des données et sa notification afin d'effectuer des opérations supplémentaires sur les données à l'expiration.

3voto

LeoMurillo Points 4117

Vous pouvez améliorer la fiabilité des notifications en faisant en sorte que plusieurs clients s'abonnent aux notifications d'expiration d'espace clé.

Vous pouvez découpler la notification d'expiration du traitement réel de la clé expirée, afin de ne les traiter qu'une seule fois et d'augmenter la fiabilité en demandant aux clients de notification d'expiration de l'espace clé d'effectuer une simple tâche de mise en file d'attente. Pour cela, vous pouvez utiliser d'autres structures de données de Redis comme des ensembles ou des ensembles triés (valeurs uniques), ou même Redis Streams avec les groupes de consommateurs.

Une autre option est d'expirer une autre clé au lieu de la clé réelle. Voir Événement sur la question des expirations clés . Ceci est également utile si vous avez besoin de la valeur de la clé expirée.

En supposant que votre clé à expirer s'appelle 'foo', lorsque vous la créez ne l'expirez pas, mais créez plutôt une autre clé appelée "foo:expire" et définissez le TTL sur celle-ci.

... Lors de l'obtention d'un événement d'expiration, déclencher la logique pour stocker et supprimer les "anciennes" données ('foo')

Dans cette approche, vous pouvez inclure une logique de récupération des notifications manquées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X