El dicho "640 KB deberían ser suficientes para cualquiera" solía ser ampliamente aceptado. Hay cierto desacuerdo sobre quién lo dijo, pero ahora hay un acuerdo universal de que nadie puede saber qué significa "suficiente" en informática.
Debido a esto, debe eliminar o desalojar algunos datos almacenados en caché cuando configura sus cachés con una estimación de la cantidad de datos que pueden contener. Sin que desalojo, si la memoria caché se llena, no se aceptan solicitudes entrantes de adición de datos porque no se eliminan datos de la memoria caché.
Figura 1 y XNUMX explica esto en una simple ilustración:
Tener habilitado el desalojo significa que su caché eliminará los datos según el uso o la prioridad en comparación con otros elementos del caché. Esto libera espacio para los datos entrantes que se pueden agregar a la memoria caché una vez que los elementos más antiguos o de menor prioridad se eliminan de la memoria caché. Figura 2 y XNUMX ilustra esto para mayor claridad.
Estaremos discutiendo cómo NCache admite y maneja diferentes políticas de desalojo y cómo se puede habilitar en el caché.
NCache Detalles Configurar el desalojo – NCache Docs NCache Documentos de la API del cliente
Políticas de desalojo en NCache
NCache proporciona varios sabores de desalojo para adaptarse a cualquier caso de uso.
Menos usados recientemente (LRU)
Una de las políticas de desalojo más utilizadas es LRU. Esta política de desalojo permite que los cachés desalojen los elementos de caché más antiguos que no han estado en uso durante mucho tiempo en comparación con los elementos a los que se accedió recientemente. Los datos se desalojan en función de su última hora de acceso. El tiempo de acceso se actualiza como una marca de tiempo para cada elemento de la memoria caché cuando se recupera o se actualiza en la memoria caché.
Supongamos que su caché contiene datos de productos que están siendo vistos por los clientes. Una vez que su caché esté casi llena, tiene sentido desalojar los productos que no se han visto durante algún tiempo.
Uso menos frecuente (LFU)
Esta política de desalojo expulsa los elementos de caché que se usan con menos frecuencia. En LFU los datos se desalojan en función de la frecuencia de su uso/número de visitas al elemento. Por ejemplo, si se accede a un elemento 5 veces, es un candidato más adecuado para el desalojo que un elemento al que se accede 20 veces. Esto es útil para escenarios en los que los clientes están viendo un artículo de gran venta y necesita desalojar el caché. Desalojar un artículo al que no se ha accedido tanto como el artículo más vendido no afectará su experiencia de usuario.
Desalojo Basado en Prioridad
Desalojo basado en prioridad primero expulsa los datos menos importantes de la memoria caché. Si puede priorizar sus datos de caché, debe adoptar esta política de expulsión para tener un mayor control sobre cómo se expulsan los datos. La prioridad se especifica al agregar el elemento de caché al caché. Puede especificar cualquier prioridad de los siguientes niveles de prioridades:
- Baja
- Debajo de lo normal
- NORMAL
- Encima de lo normal
- Alta
- No extraíble: este nivel de prioridad especifica que el elemento de caché no debe desalojarse y solo puede configurarse mediante NCache API.
Así es como puede especificar fácilmente la prioridad de cada elemento mientras lo agrega al caché:
1 2 3 4 5 6 7 8 9 |
Product product = FetchProductFromDB(1001); string key = $"Product:{product.ProductID}"; CacheItem cacheItem = new CacheItem(product) { Priority = CacheItemPriority.High }; cache.Add(key, cacheItem); |
NCache Detalles Configurar el desalojo – NCache Docs NCache Documentos de la API del cliente
Eliminación masiva de artículos de desalojo
Durante el desalojo, los elementos se eliminan a granel para que el rendimiento no se vea afectado por el desalojo de elementos individualmente. NCache le brinda la facilidad de personalizar el tamaño del volumen y el retraso entre dos desalojos masivos consecutivos de acuerdo con sus requisitos.
En Alachisoft.NCache.Servicio.exe.config archivo en %NCHOME%/bin/servicio, puede configurar estos ajustes a través de las siguientes etiquetas. Para obtener más detalles, consulte la documentación sobre Configuración de los ajustes de desalojo.
Tamaño a granel para desalojo
Puede especificar la cantidad de elementos que se eliminarán en una llamada masiva.
1 |
<add key="NCacheServer.EvictionBulkRemoveSize" value="1000"/> |
Retraso de eliminación masiva de desalojo
Puede especificar el retraso (en segundos) entre las llamadas de eliminación de desalojo como se muestra aquí. Un valor de cero significaría que no hay demora en el desalojo y los artículos seguirán siendo desalojados.
1 |
<add key="NCacheServer.EvictionBulkRemoveDelay" value="5"/> |
Habilitar el desalojo a través de Web Manager
Puede habilitar el desalojo a través de una serie de pasos simples. Una vez que habilite el desalojo, puede personalizar la tasa de desalojo (el porcentaje del tamaño total de caché que se desalojará) y especificar la política y la prioridad.
Habilitar el desalojo a través de archivos de configuración
También puede configurar el desalojo a través de cambios en el archivo de configuración de caché (config.ncconf) Bajo la <cache-settings>
etiqueta, agregue lo siguiente <eviction-policy>
tag:
1 2 3 |
<cache-settings ...> <eviction-policy enabled="True" default-priority="normal" policy="priority" eviction-ratio="5%"/> </cache-settings> |
NCache Detalles Configurar el desalojo – NCache Docs Comparación de ediciones
Desalojo en entorno agrupado
- Una vez que el desalojo está habilitado, el desalojo es manejado de manera inteligente por NCache en cada topología de caché:
- Caché con particiones/partición de réplica: In Particionado y Partición de réplica topologías, ya que cada nodo tiene una partición de datos, por lo que cada nodo es responsable de desalojar sus propios datos. Para el nodo de réplica en partición de réplica, los datos se eliminan automáticamente cuando se eliminan del nodo activo.
- Caché replicado: In Replicado topología, cada nodo tiene el mismo conjunto de datos, por lo que solo el coordinador del clúster es responsable del desalojo.
- Caché espejo: In Mirror caché, el nodo activo es responsable de llevar a cabo el desalojo en todo el caché.
Conclusión
Para que las operaciones de caché se apliquen en el caché sin ninguna interrupción, debe asegurarse de que su caché mantenga los datos actualizados y elimine los datos no deseados. Aquí es donde entra en juego el desalojo. Configurar el desalojo es simple, y el resto lo maneja NCache misma.