Using Read-Through with Cache Operations
This section will explain the use of Read-Through provider after configuring and deploying it. NCache supports multiple Read-Through providers with an application.
NCache provides Alachisoft.NCache.Web.Caching.DSReadOption
enum to specify
Read thru option in APIs.
Multiple Read-Through providers can be configured through NCache. Default Read-Through provider will be called if specific provider name is not mentioned through API. You can also use providers other than default by using provider specific overloads of APIs.
To utilize the APIs, include the following namespace in your application:
Alachisoft.NCache.Runtime.DatasourceProviders
Alachisoft.NCache.Web.Caching
Alachisoft.NCache.Runtime
Using Get Method
Member | Description |
---|---|
Get(string key, DSReadOption dsReadOption) |
Gets item from cache and uses default provider |
Get(string key, string providerName, DSReadOption dsReadOption) |
Gets item from cache and uses specified provider |
Product product=null;
try
{
string key = "Product:1001";
object data = cache.Get(key, DSReadOption.ReadThru);
if (data != null)
{
product = (Product)data;
}
}
catch (OperationFailedException exp) {
//handle exception
}
Using Read-Through with Bulk Operations
For better understanding of the these operations review Bulk Operations.
Member | Description |
---|---|
IDictionary GetBulk(string[] keys, DSReadOption dsReadOption) |
Gets bulk items from cache and uses default provider |
IDictionary GetBulk(string[] keys, string providerName, DSReadOption dsReadOption) |
Gets bulk items from cache and uses specified provider |
try
{
String[] keys = { "Product:1001", "Product:1002",
"Product:1003","Product:1004"};
IDictionary resultSet = cache.GetBulk(keys, DSReadOption.ReadThru);
//IDictionary contains cached keys and values
}
catch (OperationFailedException exp)
{
//handle exception
}
Using Read-Through with CacheItem
For this scenario, use the following API.
Member | Description |
---|---|
CacheItem GetCacheItem(string key DSReadOption dsReadOption) |
Gets CacheItem from cache and uses default provider |
GetCacheItem(string key, string providerName, DSReadOption dsReadOption) |
Gets CacheItem from cache and uses specified provider |
string key = "Product:1001";
Product product=null;
try
{
CacheItem data = cache.GetCacheItem(key, DSReadOption.ReadThru);
if (data!= null)
{
product = (Product)data.Value;
}
}
catch (Exception exp)
{
//handle exception
}
You can specify the default provider through NCache Manager or through
client.ncconf file placed in the config
folder of the NCache installation
directory. If the provider name is not provided in both the API and
client.ncconf, the default provider will automatically be used.
<cacheid="mycache" default-readthru-provider="defaultProviderName" client-cache-id="" client-cache-syncmode="optimistic" default-writethru-provider="" load-balance="True">
...
</cache>
CacheInitParams
can also be used to specify providers. NCache logs
errors/exceptions in cache logs in case of an exception during loading the
provided assemblies.