• Facebook
  • Twitter
  • Youtube
  • LinedIn
  • RSS
  • Docs
  • Comparisons
  • Blogs
  • Download
  • Contact Us
Download
Show / Hide Table of Contents

Interface ICacheLoader

The ICacheLoader Interface implementation needs to be provided at the cache server in order to load items to the cache on the cache initialization.

Assembly: Alachisoft.NCache.Runtime.dll
Syntax
public interface ICacheLoader : IDisposable

Methods

GetDatasetsToRefresh(IDictionary<String, Object>)

Responsible for getting new datasets at real-time through polling if refresh-on-event is enabled.

Declaration
IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts)
Parameters
Type Name Description
System.Collections.Generic.IDictionary<System.String, System.Object> userContexts

Dictionary of user context objects to verify which data to refresh.

Returns
Type Description
System.Collections.Generic.IDictionary<System.String, RefreshPreference>

Dictionary of datasets to refresh.

Examples

The following example calls the GetRefreshedDatasets method to get new dataset.

IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts)
{
    DateTime? lastRefreshTime;
    bool datasetHasUpdated;

    // Create a dictionary for datasets to refresh with their refresh preference 
    IDictionary<string, RefreshPreference> DatasetsToRefresh = new Dictionary<string, RefreshPreference>();

    foreach (var dataset in userContexts.Keys)
    {
         switch (dataset.ToLower())
      {
         // If dataset is products, check if dataset has been updated in data source
         // if yes, then refresh the dataset now
         case "products":
             lastRefreshTime = userContexts[dataset] as DateTime?;
             datasetHasUpdated = HasProductDatasetUpdated(dataset, lastRefreshTime);
             if (datasetHasUpdated)
                {
                   DatasetsToRefresh.Add(dataset, RefreshPreference.RefreshNow);
                }
             break;

        default:
        // Invalid dataset
      }               
    }
  // Return the dictionary containing datasets to refresh on polling with their refresh preferences
  return DatasetsToRefresh;
}

Init(IDictionary<String, String>, String)

Declaration
void Init(IDictionary<string, string> parameters, string cacheName)
Parameters
Type Name Description
System.Collections.Generic.IDictionary<System.String, System.String> parameters
System.String cacheName

LoadDatasetOnStartup(String)

This method loads item in dataset on cache startup.

Declaration
object LoadDatasetOnStartup(string dataset)
Parameters
Type Name Description
System.String dataset

Dataset for which loader is called.

Returns
Type Description
System.Object

Result of loading dataset.

Examples

The following example loads product or order into cache based on the dataset.

OrderedDictionary orderedDictionary = new OrderedDictionary();

string key = "";
ProviderCacheItem cacheItem = null;
if (dataset.Equals("Product"))
{
   key = "Product";
   cacheItem = new ProviderCacheItem("Product");
}
else if (dataset.Equals("Order"))
{
   key = "Order";
   cacheItem = new ProviderCacheItem("Order");
}
else if (dataset.Equals("Customer"))
{
   key = "Customer";
   cacheItem = new ProviderCacheItem("Customer");
}
orderedDictionary.Add(key, cacheItem);
LoaderResult result = new LoaderResult();
result.Data = orderedDictionary;
result.HasMoreData = false;
return result;

RefreshDataset(String, Object)

Responsible for refreshing items in dataset.

Declaration
object RefreshDataset(string dataset, object userContext)
Parameters
Type Name Description
System.String dataset

Dataset to refresh.

System.Object userContext

User context object to verify which data needs to refresh.

Returns
Type Description
System.Object

Result of dataset refresh.

Examples

The following example refreshes product or order into cache based on the dataset.

string key1 = "";
ProviderCacheItem cacheItem1 = null;
string key2 = "";
ProviderCacheItem cacheItem2 = null;
string key3 = "";
if (dataset.Equals("Product"))
{
   key1 = "Product";
   cacheItem1 = new ProviderCacheItem("Product");
   key2 = "Product1";
   cacheItem2 = new ProviderCacheItem("Product1");
}
else if (dataset.Equals("Order"))
{
   key1 = "Order";
   cacheItem1 = new ProviderCacheItem("Order");
   key2 = "Order1";
   cacheItem2 = new ProviderCacheItem("Order1");
}
else if (dataset.Equals("Customer"))
{
   key1 = "Customer1";
   cacheItem1 = new ProviderCacheItem("Customer1");
   key2 = "Customer2";
   cacheItem2 = new ProviderCacheItem("Customer2");
   key3 = "Customer";
}

RefresherResult result = new RefresherResult();
result.AddCacheItem(key2,cacheItem2);
result.UpdateCacheItem(key1,cacheItem1);
result.RemoveCacheItem(key3);
result.HasMoreData = false;
return result;

Contact Us

PHONE

+1 (214) 764-6933   (US)

+44 20 7993 8327   (UK)

 
EMAIL

sales@alachisoft.com

support@alachisoft.com

NCache
  • NCache Enterprise
  • NCache Community
  • Edition Comparison
  • NCache Architecture
  • Benchmarks
Download
Pricing
Try Playground

Deployments
  • Cloud (SaaS & Software)
  • On-Premises
  • Kubernetes
  • Docker
Technical Use Cases
  • ASP.NET Sessions
  • ASP.NET Core Sessions
  • Pub/Sub Messaging
  • Real-Time ASP.NET SignalR
  • Internet of Things (IoT)
  • NoSQL Database
  • Stream Processing
  • Microservices
Resources
  • Magazine Articles
  • Third-Party Articles
  • Articles
  • Videos
  • Whitepapers
  • Shows
  • Talks
  • Blogs
  • Docs
Customer Case Studies
  • Testimonials
  • Customers
Support
  • Schedule a Demo
  • Forum (Google Groups)
  • Tips
Company
  • Leadership
  • Partners
  • News
  • Events
  • Careers
Contact Us

  • EnglishChinese (Simplified)FrenchGermanItalianJapaneseKoreanPortugueseSpanish

  • Contact Us
  •  
  • Sitemap
  •  
  • Terms of Use
  •  
  • Privacy Policy
© Copyright Alachisoft 2002 - . All rights reserved. NCache is a registered trademark of Diyatech Corp.
Back to top