Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 34045|Répondre: 6

[Source] .NET utilise le cache Redis pour les notifications d’expiration

[Copié le lien]
Publié le 2020-8-22 à 10:34:59 | | | |
Lors de la réalisation de certaines opérations chronométrées, nous avons besoin d’un retour sur les résultats. Par exemple, les commandes sont automatiquement supprimées après expiration, les commandes sont automatiquement louées après quelques jours, les commandes impayées sont fermées après 15 minutes, etc., ce qui peut être réalisé à l’aide de certains cadres de tâches temporisées ou de méthodes de sondage. Cet article utilise le mécanisme de notification d’expiration d’événements de cache de fonctionnalités avancées de Redis combiné au code .NET/C# pour satisfaire aux exigences métier.

Introduction

Scénarios d’utilisation : 1. Dans le secteur des paiements, les ordres impayés sont automatiquement fermés 2. Rappels d’expiration du cache

En général, nous pouvons utiliser le service de chronométrage pour traiter la fermeture automatique des commandes impayées, comme appeler l’interface chaque minute pour traiter les commandes impayées et expirées, mais dans ce cas, cela consommera des performances informatiques, même s’il n’y a pas de commande, elle sera traitée toutes les minutes, et le délai maximal de traitement de la commande sera de 59 secondes, et le service de chronométrage doit toujours être disponible

Alors, que voulons-nous faire ? Mais lorsqu’il y a des commandes impayées ou expirées avec un traitement à faible latence ? Nous pouvons utiliser le mécanisme d’expiration du cache de Redis pour pousser l’abonnement ?

Abonnement Redis

Modifier le notify-keyspace-events Ex dans le fichier de configuration redis.conf

Pour économiser des ressources de la coupe, les notifications d’événements ne sont pas activées par défaut, et par défaut est notify-keyspace-events

# Notification d’espace K, <db>préfixée de __keyspace@__
# Notification d’événement clé E, <db>précédée de __keysevent@__
# g del, expipre, renommer et d’autres types de commandes génériques, ...
# $string commande
# Commande l List
#s Commande Set
# h Commande de hachage
# Commande d’ensemble ordonné z
# x Événement d’expiration (généré à chaque expiration d’une clé)
# Événement d’expulsion E (généré lorsque la clé est effacée alors que la mémoire est pleine)
# Un alias g$lshzxe, donc « AKE » signifie tous les événements


Notify-keyspace-events « KX » indique que vous souhaitez surveiller les événements d’invalidation pour une clé. Définir le paramètre sur la chaîne AKE signifie envoyer tous types de notifications.

J’ai installé Redis en tant que service sur ma machine, modifié le fichier de configuration redis.windows.conf, et j’ai dû redémarrer la configuration du service Redis pour que cela prenne effet.

Exemple de code .NET/C#

Le package est le suivant :



invoquer



Essayons d’écrire un cache avec redis-cli.





En fait, vous pouvez aussi vous abonner aux notifications d’expiration du cache en exécutant la commande suivante via redis-cli :




Lorsque N clients s’abonnent aux notifications d’événements d’expiration du cache, Redis informera N utilisateurs du même message d’expiration, et non seulement un des clients, comme montré dans la figure ci-dessous :



Téléchargement du code source C# :

https://down.itsvse.com/item/17856.html

résumé

Redis pub/sub est un mécanisme de messages peu fiable, il ne stocke pas d’informations, il ne fait que transférer en ligne, et il n’y a clairement pas de mécanisme de confirmation d’ack, seul le segment d’abonnement sera transféré, donc Keyspace Notifications est aussi un système de notification peu fiable, si notre entreprise a besoin d’une bonne fiabilité, alors ce n’est pas le meilleur choix. En général, nous recommandons le DLX (Dead-Letter-Exchange) de RabbitMQ pour l’implémenter, c’est-à-dire la fonction de file d’attente retardée. C’est juste que la solution de Redis est plus facile à mettre en œuvre et moins coûteuse à exploiter. Il reste très pratique pour les entreprises qui ne nécessitent pas une grande fiabilité.




Précédent:Prompt intelligent d’installation chinois de .NET Core 3.1
Prochain:.NET n’obtient pas l’assemblage de référence complet
Publié le 29-08-2020 à 14:33:18 |
Apprendre à apprendre
Publié le 30-11-2021 à 13:16:47 |
Apprends-le
Publié le 30-11-2021 à 13:21:02 |
Redis pub/sub est un mécanisme de messages peu fiable, il ne stocke pas d’informations, il ne fait que transférer en ligne, et il n’y a clairement pas de mécanisme de confirmation d’ack, seul le segment d’abonnement sera transféré, donc Keyspace Notifications est aussi un système de notification peu fiable, si notre entreprise a besoin d’une bonne fiabilité, alors ce n’est pas le meilleur choix. En général, nous recommandons le DLX (Dead-Letter-Exchange) de RabbitMQ pour l’implémenter, c’est-à-dire la fonction de file d’attente retardée. C’est juste que la solution de Redis est plus facile à mettre en œuvre et moins coûteuse à exploiter. Il reste très pratique pour les entreprises qui ne nécessitent pas une grande fiabilité.
Publié le 14-02-2022 à 17:42:43 |
Regarde, apprends
Publié le 2022-03-2 à 15:25:00 |
Apprends-le
Publié le 27-07-2022 à 16:40:13 |
Apprendre à apprendre
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com