Al realizar ciertas operaciones con tiempo limitado, necesitamos retroalimentación sobre los resultados. Por ejemplo, los pedidos se eliminan automáticamente tras la expiración, los pedidos se felicitan automáticamente tras unos días, los pedidos impagados se cierran tras 15 minutos, etc., lo que puede completarse utilizando algunos marcos de tareas con tiempo o métodos de consulta. Este artículo utiliza el mecanismo avanzado de notificación de eventos de caducidad de caché de Redis combinado con código .NET/C# para completar los requisitos empresariales.
Introducción
Escenarios de uso: 1. En el negocio de pagos, las órdenes impagadas se cierran automáticamente 2. Recordatorios de caducidad de caché
En general, podemos usar el servicio de temporización para procesar el cierre automático de pedidos impagos, como llamar a la interfaz cada minuto para tratar pedidos impagados y caducados, pero en este caso, consumirá el rendimiento del ordenador, incluso si no hay pedido, se procesará cada minuto, y el retraso máximo del tiempo de procesamiento será de 59 segundos, y el servicio de cronometraje debe estar siempre disponible
Entonces, ¿qué queremos hacer? Solo cuando haya pedidos impagados y caducados con procesamiento de baja latencia, podemos usar el mecanismo de caducidad de caché de Redis para impulsar la suscripción.
Suscripción a Redis
Modifica el notify-keyspace-events Ex en el archivo de configuración redis.conf
Para ahorrar recursos de la copa, las notificaciones de eventos no están activadas por defecto, y por defecto es notify-keyspace-events
# Notificación de espacio de teclas K, <db>prefijado con __keyspace@__ # Notificación de evento clave E, <db>prefijada con __keysevent@__ # g del, expipre, rename y otros tipos de comandos genéricos, ... # $string orden # Comando l List #s Comando Set # h Comando Hash # Comando de conjunto ordenado z # x Evento de caducidad (generado cada vez que caduca una clave) # Evento de expulsión E (generado cuando la clave se borra y la memoria está llena) # Un alias g$lshzxe, así que "AKE" significa todos los eventos
Notify-keyspace-events "KX" indica que quieres monitorizar eventos de invalidación para una clave. Establecer el parámetro en la cadena AKE significa enviar todo tipo de notificaciones.
Instalé Redis como servicio en mi máquina, modifiqué el archivo de configuración redis.windows.conf y tuve que reiniciar la configuración del servicio de Redis para que entrara en vigor.
Ejemplo de código .NET/C#
El paquete es el siguiente:
invocar
Probemos a escribir una caché con redis-cli.
De hecho, también puedes suscribirte a las notificaciones de caducidad de la caché ejecutando el siguiente comando a través de redis-cli:
Cuando N clientes se suscriben a notificaciones de eventos de caducidad en caché, Redis notificará a N usuarios del mismo mensaje de expiración, no solo a uno de los clientes, como se muestra en la figura siguiente:
Descarga del código fuente en C#:
https://down.itsvse.com/item/17856.html
resumen
Redis pub/sub es un mecanismo de mensajes poco fiable, no almacena información, solo reenvía en línea, y definitivamente no existe un mecanismo de confirmación de ack, y solo se reenviará el segmento de suscripción, así que Keyspace Notifications también es un sistema de notificaciones poco fiable; si nuestro negocio necesita buena fiabilidad, entonces no es la mejor opción. Generalmente, recomendamos DLX (Dead-Letter-Exchange) de RabbitMQ para implementarlo, que es la función de cola retardada. Simplemente, la solución de Redis es más fácil de implementar y menos costosa de operar. Sigue siendo muy conveniente para empresas que no requieren una alta fiabilidad. |