En la vida cotidiana, debe haber tenido una experiencia en la que un cartón de leche permaneció en su refrigerador por más de un tiempo y olvidó tirarlo. Lo que pasa después es que tienes leche rancia en tu refrigerador, ocupando espacio, no sirve para nada y solo puede ser dañina si se consume. Del mismo modo, se supone que sus datos en caché también tienen una fecha de vencimiento. Cualquier dato guardado en su caché por mucho tiempo se vuelve obsoleto (como la leche), no sirve para nada y solo ocupa espacio en su caché. Y la solución en ambos casos es similar: ¡tirarlo!
Este blog se trata de explicar las estrategias de caducidad para mantener actualizados los datos en su caché y desechar los datos obsoletos.
Caducidad de datos de caché: la necesidad y el concepto
Supongamos que está ejecutando un sitio web de comercio electrónico y agregó la información de estos productos en el caché. Durante un largo período de tiempo, la información de los productos se conserva en la memoria caché sin modificarse. Pero ahora, por alguna razón, los precios de algunos productos se han actualizado en la fuente de datos. En este caso, la inconsistencia de los datos ocurre porque sus clientes todavía están viendo los precios más antiguos, que en realidad son los datos obsoletos almacenados en caché.
NCache proporciona caducidad donde puede establecer un límite de tiempo con sus datos, y una vez que se alcanza el límite, los datos ya no son válidos. Los datos invalidados deben eliminarse de la memoria caché después de un período de tiempo predefinido. Intervalo limpio. Es un intervalo (establecido por usted) después del cual todos los elementos vencidos se eliminan automáticamente del caché. Por lo tanto, cualquier elemento caducado no se elimina de la memoria caché de inmediato.
Caducidad de datos en NCache NCache Detalles
Tipos de Caducidad en NCache
NCache proporciona las siguientes estrategias para satisfacer los requisitos del usuario:
- Absoluto/Caducidad absoluta predeterminada
- Deslizante/Caducidad variable predeterminada
Examinaremos de cerca estos dos tipos y sus usos.
Caducidad absoluta
En esta estrategia, se especifica un tiempo absoluto con el elemento que debe invalidarse. El tiempo especificado se mantiene en el UTC formato de hora, por lo tanto, la hora especificada en cualquier zona se convierte al formato de hora UTC en el servidor de caché. El tiempo puede variar desde segundos a horas a días a meses, y una vez transcurrido el tiempo, el artículo se invalida o caduca. Mire la Figura 1 para mayor claridad:
Caso de uso: Para los casos en los que puede estimar cuánto tiempo se requiere que un elemento se retenga en el caché. Por ejemplo, si se lanza un producto por tiempo limitado y no se puede vender después de 24 horas, el artículo se agrega con una caducidad absoluta de 24 horas y después de eso, el producto caduca del caché.
Veamos el ejemplo de código que muestra agrega un elemento en el caché que caduca después de 5 minutos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
Caducidad móvil
Como su nombre lo explica, esta estrategia mantiene los datos en el caché mientras se usan. Por lo tanto, los datos que no se han utilizado durante un tiempo específico se invalidan. Cada vez que se accede a cualquier dato agregado con caducidad deslizante, se amplía la duración de la existencia de esos datos en la memoria caché. Por ejemplo, si no se accede a ningún elemento con un intervalo de deslizamiento de 30 segundos durante 30 segundos, caduca. De manera similar, si se accede dentro de los 30 segundos, la vida útil del elemento se excede por otros 30 segundos en el caché.
Caso de uso: Supongamos que tiene una aplicación que toma las credenciales del usuario para acceder. Desea proporcionar acceso al usuario siempre que el usuario esté activo y usando la aplicación. El vencimiento deslizante lo ayuda en los casos en que la sesión se puede mantener al realizar un seguimiento de los usuarios activos.
En el ejemplo que se muestra a continuación, se agrega una caducidad móvil de 5 minutos con el producto:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Sliding, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
Desalojo en NCache Caducidad absoluta Caducidad móvil
Estrategias de caducidad predeterminadas
NCache también le permite agregar la caducidad predeterminada para ayudarlo a ahorrar el esfuerzo de configurarlo manualmente. Estos solo se pueden configurar usando NCache Web Manager o archivos de configuración (que se muestran más adelante en el blog). Los siguientes son los valores predeterminados:
- Absoluto predeterminado
- Deslizamiento predeterminado
- Predeterminado Absoluto Más largo
- Deslizamiento predeterminado más largo
Los valores predeterminados por defecto son 5 segundos para todas las estrategias de caducidad. Por favor refiérase a Caducidad predeterminada explicado detalladamente en NCache documentación.
Configurar la caducidad usando NCache Web Manager
Puede habilitar la caducidad y establecer la duración usando NCache Administrador web. Déjame enseñarte como:
Configurar la caducidad mediante archivos de configuración
También puede habilitar la caducidad en NCache utilizando el archivo de configuración (config.ncconf) que está instalado en NCache directorio de instalación por defecto. Bajo la etiqueta, hay una etiqueta como se muestra a continuación:
1 2 3 4 5 |
<expiration-policy enabled="True"> <absolute-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="30"/> <sliding-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="20"/> </expiration-policy> |
De manera similar, puede especificar el intervalo de limpieza después del cual los elementos vencidos se eliminan del caché como se muestra a continuación:
1 2 3 |
<cache-settings ... > <cleanup interval="15sec"/> </cache-settings> |
Eliminación masiva de artículos vencidos
Todos los elementos caducados de la memoria caché se eliminan de forma masiva para evitar el retroceso en el rendimiento causado por la eliminación de elementos individuales. Sin embargo, puede configurar el tamaño masivo de los elementos que se eliminarán, así como la demora entre dos eliminaciones masivas consecutivas de datos caducados. NCache viene con un Alachisoft.NCache.Servicio.exe.config archivo ubicado en el directorio de instalación de NCache y tiene las siguientes etiquetas configurables:
1 2 |
<add key="NCacheServer.ExpirationBulkRemoveSize" value="10"/> <add key="NCacheServer.ExpirationBulkRemoveDelay" value="0"/> |
Configuración de la caducidad de datos Caducidad y desalojo
Hechos a saber
- Si se agrega algún elemento en el caché sin caducidad (absoluta o deslizante), permanecerá en el caché para siempre hasta que se elimine manualmente.
- Tendrás que reiniciar el NCache service después de configurar cualquier cosa usando los archivos de configuración para que el cambio surta efecto.
- In NCache, la expiración funciona de manera diferente con respecto a las diferentes topologías, todo se explica detalladamente en Caducidad en entorno agrupado.
¡Resumiendo!
Entonces, todo lo que hemos discutido hasta ahora se resume en el hecho de que los datos obsoletos en su caché deben administrarse de manera eficiente y la caducidad es la forma de hacerlo. Es una técnica que caduca los datos de la memoria caché en función de la técnica proporcionada por usted. NCache te ayuda a lidiar con estas cosas sin ningún problema.