Notificaciones para el Servicio de caché administrado 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í?

Microsoft Azure Cache ofrece notificaciones de caché que permiten a las aplicaciones recibir notificaciones asincrónicas cuando se producen diversas operaciones de caché en una caché con nombre. 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.

Nota

Las notificaciones están disponibles en las ofertas de caché Standard y Premium, y no están disponibles en la oferta Basic. Para más información, consulte Ofertas de caché para Azure Managed Cache Service.

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 la memoria 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

Microsoft Azure caché solo puede 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 notificaciones. También es posible que los clientes de caché no reciban notificaciones porque los datos se hayan perdido por un error de caché. 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 la memoria caché

Hay una diferencia importante entre la pérdida de notificaciones y la pérdida de la 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 se elimina toda la caché, el cliente de caché producirá excepciones la próxima vez que intente usar la memoria caché porque no podrá conectarse al extremo de la caché. Las notificaciones no informan sobre eventos de caché, como la creación o eliminación de cachés con nombre. Si se elimina una caché con nombre después de registrar notificaciones, simplemente se dejan de recibir notificaciones. No es posible distinguir entre una memoria caché con nombre que no existe y las operaciones que no se realizan en una memoria caché con nombre.

Nota

Las notificaciones de caché solamente informan de cambios relacionados con los datos de las regiones y los elementos de caché. No informan de eventos de la propia caché.

Habilitar las notificaciones de caché

Las notificaciones se configuran en el nivel de caché con nombre en el Portal de administración, en la ficha Configurar para Caché. El valor predeterminado para las notificaciones es Deshabilitado.

Cache Notifications for Windows Azure Cache Servic

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.

Vea también

Otros recursos

Características del Servicio de caché administrado de Azure