NCache 是一种速度极快且可扩展的 .NET 内存分布式缓存,可缓存应用程序数据以减少昂贵的数据库访问。 您可以使用 NCache 消除与数据存储和数据库可扩展性相关的性能瓶颈。
使用此类缓存的最常见方法是让应用程序从数据库/数据源读取数据,然后缓存它。 之后,当您的应用程序更新数据库中的此数据时,它还会更新缓存以确保缓存与数据库同步。
此外, NCache 提供了另一种非常强大的数据读写机制,称为数据源提供者(Read-through/Write-through/Write-behind) NCache 从您的数据库中读取和写入数据。
您可以使用三种方式 NCache 在这种情况下:
以下是在中使用 Read-through、Write-through 和 Write-behind 的一些好处 NCache.
以下是 Read-through、Write-through 和 Write-behind 的一些亮点 NCache.
开发 Read-through 和 Write-through Handler 的代码是一个简单的过程。 以下是两者的接口示例。
public interface IReadThruProvider
{
void Init(IDictionary parameters, string cacheId);
ProviderCacheItem LoadFromSource(string key);
IDictionary<string, ProviderCacheItem> LoadFromSource(ICollection<string> keys);
ProviderDataTypeItem<IEnumerable> LoadDataTypeFromSource(string key, DistributedDataType dataType);
void Dispose();
}
public interface ReadThruProvider extends java.lang.AutoCloseable
{
void init(java.util.Map<java.lang.String,java.lang.String> parameters, java.lang.String cacheId) throws java.lang.Exception;
ProviderCacheItem loadFromSource(java.lang.String key) throws java.lang.Exception;
java.util.Map<java.lang.String,ProviderCacheItem> loadFromSource(java.util.Collection<java.lang.String> keys) throws java.lang.Exception;
ProviderDataStructureItem loadDataStructureFromSource(java.lang.String key, DistributedDataStructureType distributedDataStructureType) throws java.lang.Exception;
}
public interface IWriteThruProvider
{
void Init(IDictionary parameters, string cacheId);
OperationResult WriteToDataSource(WriteOperation operation);
ICollection<OperationResult> WriteToDataSource(ICollection<WriteOperation> operations);
ICollection<OperationResult> WriteToDataSource(ICollection<DataTypeWriteOperation> dataTypeWriteOperations);
void Dispose();
}
public interface WriteThruProvider extends java.lang.AutoCloseable
{
void init(java.util.Map<java.lang.String,java.lang.String> parameters, java.lang.String cacheId) throws java.lang.Exception;
OperationResult writeToDataSource(WriteOperation operation) throws java.lang.Exception;
java.util.Collection<OperationResult> writeToDataSource(java.util.Collection<WriteOperation> operations) throws java.lang.Exception;
java.util.Collection<OperationResult> writeDataStructureToDataSource(java.util.Collection<DataStructureWriteOperation< dataStructureWriteOperations) throws java.lang.Exception;
}