Dependencia de datos de caché en archivo
La dependencia de archivos proporciona un mecanismo para invalidar los datos de la caché en el caso de fuentes de datos no relacionales. Aquí puede asociar una dependencia de archivo/carpeta con un elemento de datos de caché. Siempre que ese archivo/carpeta se elimine o modifique, NCache eliminará su elemento dependiente del caché. El hilo de limpieza de caché monitorea el archivo/carpeta dependiente para detectar cualquier cambio en cada CleanInterval
.
En el hilo de limpieza de caché, NCache desencadena dependencia en los siguientes escenarios:
- El archivo de dependencia se elimina/modifica.
- La carpeta de dependencia se elimina/modifica.
- La dependencia se crea en el archivo/carpeta inexistente, pero se crea en el intervalo de limpieza.
De manera similar, varios elementos pueden depender de un solo archivo. Cualquier cambio en un archivo, ya sea actualizando el archivo o eliminando, hace que la memoria caché elimine los elementos dependientes de la memoria caché. Del mismo modo, un elemento puede crear dependencia en varios archivos, en Dependencia de archivos.
También puede proporcionar un retraso llamado startAfter
en Dependencia del archivo, que indica cuándo comenzar a monitorear el archivo dependiente para detectar cualquier cambio. De este modo, NCache comenzará a comprobar el archivo dependiente después de la startAfter
ha transcurrido el tiempo.
Dependencia de datos de caché en requisitos previos de archivos
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Para obtener detalles de la API, consulte: Dolor, Artículo de caché, Atributos de elemento de caché, Dependencia, Actualizar atributos, Dependencia de archivo.
Importante:
Asegúrese de que el NCache El servicio tiene acceso a la ruta del archivo donde se coloca el archivo del que depende.
Agregar dependencia de archivos con datos de caché
CacheItem
es una clase personalizada proporcionada por NCache que se puede usar para agregar datos al caché y también le permite configurar metadatos adicionales asociados con un objeto de esta clase. Estos metadatos definen las propiedades del elemento, como dependencias, vencimientos y más.
El proyecto Añada El método agrega un nuevo elemento en los datos de la caché, mientras que el recuadro El método agrega un nuevo elemento con dependencia y, si el elemento ya existe en el caché, sobrescribe las propiedades preexistentes.
En el siguiente ejemplo, los datos agregados en el caché son el contenido del archivo colocado en la ruta especificada como un CacheItem
con dependencia del archivo. Cualquier cambio en el archivo dará como resultado la caducidad de los datos dependientes presentes en el caché. Los elementos caducados se eliminarán del caché. CleanInterval
.
// Precondition: Cache is already connected
// Specify the file path to add dependency on the file
string filepath = "D:\\Products.csv";
// Getting product from file.
Product product = FetchProductFromFile(filepath);
string key = $"Product: {product.ProductID}";
// Create a new cacheItem with product data.
var cacheItem = new CacheItem(product);
// Create the dependency on the file with specified path.
cacheItem.Dependency = new FileDependency(filepath);
// Add the file data in the cache with dependency on the file
cache.Add(key, cacheItem);
Note
Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Desencadenar dependencia de archivo con retraso
Si desea agregar una dependencia a un elemento que se activa después de un tiempo determinado, NCache le permite especificar el intervalo de tiempo para eso.
El proyecto Añada método agrega un nuevo elemento en el caché mientras que el recuadro El método agrega un nuevo elemento con dependencia y, si el elemento ya existe en el caché, sobrescribe sus propiedades.
En el siguiente ejemplo, los datos agregados en la caché son el contenido del archivo ubicado en la ruta especificada dependiendo del archivo. La dependencia se activará después de un lapso de 20 minutos. Cualquier cambio en el archivo dará como resultado la caducidad de los datos dependientes presentes en el caché. Los elementos caducados se eliminarán del caché. CleanInterval
.
// Specify the file path to add dependency on the file
string filepath = "D:\\Products.csv";
//Getting product from file.
Product product = FetchProductFromFile(filepath);
// Creating a unique key for product.
string key = $"Product: {product.ProductID}";
// Create a new cacheItem with product data.
var cacheItem = new CacheItem(product);
// Create the dependency on the file with specified path.
cacheItem.Dependency = new FileDependency(filepath, DateTime.Now.AddMinutes(20));
// Add the file data in the cache with dependency on the file
cache.Insert(key, cacheItem);
Agregar dependencia de archivo en varios archivos
También puede agregar Dependencia de archivos a un elemento que depende de varios archivos o carpetas. De esta manera, un solo elemento puede depender de varios elementos utilizando el Añada or recuadro método. los Add
método agrega un nuevo elemento en el caché mientras que el Insert
El método agrega un nuevo elemento con dependencia y, si el elemento ya existe en el caché, sobrescribe sus propiedades.
El siguiente ejemplo agrega un elemento con una clave que depende de dos archivos ubicados en las rutas especificadas.
// Specify the file paths to add dependency on the file
string orderFilePath = "D:\\Orders.csv";
string orderDetailFilePath = "D:\\OrderDetail.csv";
string[] filePaths = { orderFilePath, orderDetailFilePath };
// Getting order from file.
Order order = FetchOrderFromFile(orderFilePath);
string key = $"Order: {order.OrderID}";
// Create a new cacheItem with order data.
var cacheItem = new CacheItem(order);
// Create the dependency on the files with specified path.
cacheItem.Dependency = new FileDependency(filePaths);
// Add the file data in the cache with dependency on the files.
cache.Add(key, cacheItem);
Agregar dependencia de archivo a elementos de caché existentes
NCache también le brinda la facilidad de agregar dependencia de clave a un elemento que ya está presente en el caché, sin volver a insertarlo en el caché.
Importante:
Este enfoque es comparativamente menos liviano y más rentable dado que los elementos ya están presentes en el caché.
Usando la API UpdateAttributes
Esto se hace a través del CacheItemAttribute
clase, que tiene la propiedad de Dependency
ser puesto en contra CacheItem
. Luego, el atributo se establece con la clave existente del artículo, utilizando el UpdateAttributes
método de la ICache
de la interfaz del.
El siguiente ejemplo agrega un elemento al caché sin dependencia y luego establece la Dependencia del archivo para el elemento usando el UpdateAttributes
método. Esto no requiere la necesidad de agregar el elemento nuevamente al caché.
// Precondition: Cache is already connected
// Specify the file path to add dependency on the file
string filepath = "D:\\Products.csv";
string key = $"Product: 1";
// Create a new cacheItemAttribute.
var attribute = new CacheItemAttributes();
// Create the dependency on the file with specified path.
attribute.Dependency = new FileDependency(filepath);
// update the cacheItem.
cache.UpdateAttributes(key, attribute);
Recursos adicionales
NCache proporciona una aplicación de muestra para la dependencia de archivos en GitHub.
Vea también
.NETO: Alachisoft.NCache.Dependencias.de.tiempo de ejecución espacio de nombres. espacio de nombres.
Java: com.alachisoft.ncache.dependencias.de.tiempo de ejecución espacio de nombres
Nodo.js: Dependencia de archivo clase.
Pitón: ncache.dependencias.de.tiempo de ejecución clase.