Compartir a través de


Notificaciones en Caché en rol de Azure

Importante

Microsoft recomienda todos los nuevos desarrollos que usen Azure Redis Cache. Para obtener documentación actual e instrucciones sobre cómo elegir una oferta de Azure Cache, consulte ¿Qué oferta de Azure Cache es adecuada para mí?

Azure ofrece notificaciones de la memoria caché que permiten que sus aplicaciones reciban notificaciones asincrónicas cuando se producen varias operaciones de caché en el clúster de caché. Las notificaciones de caché también ofrecen invalidación automática de los objetos almacenados en caché localmente.

Para recibir notificaciones de caché asincrónicas, agregue una devolución de llamada de notificación de caché a la aplicación. Al agregar la devolución de la llamada, se definen los tipos de operaciones de caché que desencadenarán una notificación de caché y el método de la aplicación que debe llamarse en caso de producirse las operaciones especificadas. Una memoria caché con nombre debe habilitar las notificaciones de caché y suscribirse a ellas.

Activar notificaciones de caché

Estas operaciones de caché se definen mediante miembros de la clase DataCacheOperations .

Operaciones de región

La aplicación puede recibir notificaciones de caché cuando se producen las siguientes operaciones en una región:

  • CreateRegion: cuando se crea una región en la memoria caché.

  • ClearRegion: cuando se borra una región en la memoria caché.

  • RemoveRegion: cuando se quita una región de la memoria caché.

Operaciones de elemento

La aplicación puede recibir notificaciones de caché cuando se producen las siguientes operaciones de caché en un objeto almacenado en caché (un elemento en la memoria caché).

  • AddItem: cuando se agrega un elemento a la memoria caché.

  • ReplaceItem: cuando se reemplaza un elemento en la memoria caché.

  • RemoveItem: cuando se quita un elemento de la memoria caché.

Nota

Por sí solas, estas operaciones de elemento no dependen de si se producen dentro de una región o no. Puede optar por limitar el ámbito de notificación de la devolución de la llamada a una región determinada. Esto se describe en la sección Ámbito de notificación de este documento.

Ámbito de notificación

Según la actividad y las necesidades de la aplicación, es posible que no desee prestar atención a los eventos de cada uno de los objetos y regiones de la memoria caché. Puede limitar el ámbito de las notificaciones desde el nivel de la memoria caché hacia el nivel de la región y el nivel del elemento. El ámbito de notificación que haya seleccionado al agregar una devolución de llamada tiene un impacto determinante en las notificaciones de caché que va a recibir.

En el nivel de caché, la aplicación puede recibir notificaciones de todas las operaciones de caché, de todos los objetos y las regiones de esta. En el nivel de la región, la aplicación recibirá notificaciones solamente de las operaciones de caché de una única región y de los objetos que en ella se encuentran. En el nivel del elemento, la aplicación recibirá solo notificaciones de las operaciones de caché correspondientes a un único objeto.

Para especificar el ámbito de notificación que desea, elija uno de estos tres métodos para agregar una devolución de llamada de notificación de caché:

  • AddCacheLevelCallback: cuando quiera recibir una notificación de las operaciones de caché basadas en regiones y elementos que se producen en todas las regiones y elementos.

  • AddRegionLevelCallback: cuando quiera recibir una notificación de las operaciones de caché basadas en regiones y elementos que se producen en una región específica.

  • AddItemLevelCallback: cuando quiera recibir una notificación de las operaciones de caché basadas en elementos que se producen en un elemento específico.

Orden de notificación

El orden de las notificaciones recibidas por el cliente de caché se garantiza en el contexto de una única región. Por ejemplo, supongamos que ha creado una región denominada RegionA. Puesto que todos los datos de una región de caché se limitan a la misma región, todas las operaciones de caché pertenecientes a RegionA (ámbito de notificación del nivel de la región) llegan al cliente de caché en el orden adecuado respecto a su relación. En el caso de operaciones de caché basadas en elementos y regiones que se producen en otros hosts de caché, no se garantiza que lleguen en el orden adecuado en relación con las operaciones que se han producido en RegionA.

Para no provocar perjuicios en el rendimiento, no se puede garantizar el orden de las notificaciones en las que haya implicados más de una región u objetos que no están almacenados en la misma región.

La información de versión de los eventos de elemento, en forma del objeto DataCacheItemVersion , se pasa al método invocado por la notificación de caché con el version parámetro . Este objeto DataCacheItemVersion corresponde a la versión del objeto que desencadenó el evento de elemento. Mediante el método CompareTo , puede comparar versiones para determinar qué operaciones de caché se han realizado primero.

Nota

Las comparaciones de versión solo son significativas si se comparan versiones del mismo elemento especificadas con la misma clave. No es posible deducir el orden comparando versiones de claves diferentes; El método CompareTo puede devolver un resultado, pero el resultado solo es válido para las versiones de la misma clave.

Intervalo de sondeo

Si usa notificaciones de caché, la aplicación comprueba el clúster de caché a intervalos regulares para detectar si hay nuevas notificaciones disponibles. Este intervalo, denominado intervalo de sondeo, se produce cada 300 segundos de forma predeterminada. Las aplicaciones que escriben con frecuencia podrían establecerlo en un valor menor, pero para las memorias caché que no cambian con frecuencia, es mejor usar un intervalo mayor. El valor predeterminado de 300 segundos es adecuado para la mayoría de las memorias caché.

El intervalo de sondeo se especifica en unidades de segundos en las opciones de configuración de la aplicación. Para especificar un intervalo específico, puede usar el atributo pollInterval del elemento clientNotifications en el archivo de configuración de la aplicación. También puede especificar un intervalo de sondeo específico mediante programación con la NotificationProperties propiedad del objeto DataCacheFactoryConfiguration .

Cuando se pierden las notificaciones

Los hosts de caché solo pueden contener una determinada cantidad de operaciones de caché en memoria. Es posible que algunos clientes de caché no puedan recibir notificaciones antes de que se trunquen en las colas de hosts de caché. También es posible que los clientes de caché no reciban notificaciones porque los datos se hayan perdido debido al error de un servidor de caché mientras el resto del clúster sigue en ejecución. En estos casos, el cliente de caché puede descubrir que ha perdido algunas notificaciones de caché mediante una notificación de error. La aplicación puede agregar una devolución de llamada para recibir notificaciones de error mediante el método AddFailureNotificationCallback . Para obtener más información, consulte How to: Add a Failure Notification Callback (Cómo: Agregar una devolución de llamada de notificación de error).

Cuando se pierde el clúster de caché

Hay una diferencia importante entre la pérdida de notificaciones y la pérdida del clúster de caché. Si la aplicación pierde una o más notificaciones, puede saber de la pérdida por medio de una notificación de error. Si el clúster de caché se detiene, reinicia o pierde de algún modo en su totalidad, no se activará ninguna notificación. En lugar de esto, el cliente de caché producirá excepciones la próxima vez que intente usar la caché si no puede conectarse al clúster. Las notificaciones no informan sobre eventos del clúster de caché, como la creación o eliminación de cachés. Si se elimina una caché del servidor después de registrar notificaciones, simplemente se dejan de recibir notificaciones. No es posible distinguir si una caché no existe de si no se realizan las operaciones en una caché.

Nota

Las notificaciones de caché solamente informan de cambios relacionados con los datos de las regiones y los elementos de caché en el clúster; no informan de eventos del propio clúster.

Habilitar las notificaciones de caché

La característica de notificaciones de caché se configura en el nivel de caché en las opciones de configuración del clúster. Como propiedad de la caché, puede habilitarla cuando crea la caché en un principio. De forma predeterminada, la característica de notificaciones de caché está deshabilitada cuando se crea una caché.

No se necesita ninguna opción de configuración de la aplicación para agregar una devolución de llamada para la recepción de notificaciones de caché. Puede usar las opciones de configuración de la aplicación para especificar un intervalo de sondeo específico. De forma predeterminada, el intervalo de sondeo es de 300 segundos. Si desea una duración diferente, use el clientNotification elemento en el archivo de configuración de aplicación basado en XML o especifique el intervalo deseado mediante programación con la NotificationsProperties propiedad del objeto DataCacheFactoryConfiguration .

Usar notificaciones de caché

Una vez habilitadas las notificaciones de caché, hay tres tareas relacionadas con el uso de notificaciones de caché: agregar devoluciones de llamada de notificación de caché, agregar una devolución de llamada de notificación de error y quitar devoluciones de llamada de notificación de caché. Los procedimientos para cada una de estas tareas se describen en el resto de esta documentación.

Consulte también

Conceptos

Características de Caché en rol en Caché de Azure