Add/Update Cache Data with Groups [Deprecated]
NCache allows users to add items in cache as part of a certain group. There can only be a single item associated with a single group. CacheItem
is a custom class provided by NCache, which can be used to add data to the cache. CacheItem
also lets you set additional specifications associated with an object as a property of groups.
The CacheItem
is added to the cache using the Insert
method, a recommended approach with the group if no item already exists in the cache with the specified key. Whereas, the Add
operation fails if the key already exists and an exception will be thrown.
Prerequisites
- Create a new Console Application.
- Install either of the following NuGet packages in your .NET client application:
- Enterprise:
Install-Package Alachisoft.NCache.SDK -Version 4.9.1.0
- Professional:
Install-Package Alachisoft.NCache.Professional.SDK -Version 4.9.1.0
- Make sure that the data being added is serializable.
- Add NCache References by locating
%NCHOME%\NCache\bin\assembly\4.0
and adding Alachisoft.NCache.Web
and Alachisoft.NCache.Runtime
as appropriate.
- Include the
Alachisoft.NCache.Web.Caching
namespace in your application.
- To learn more about the NCache Legacy API, please download the NCache 4.9 documents available as a .zip file on the Alachisoft Website.
In the following example, the data group is set by assigning it as a property of CacheItem
containing the object customer.
// Preconditions: Cache is already connected
// In an online-store, customers from different regions need to be grouped accordingly
// A customer has signed in to the website from the East Coast region
// Create a unique cache key for this customer.
string customerKey = $"Customer:ALFKI";
// Get customer from cache
Customer customer = cache.Get<Customer>(customerKey);
// Get customer from database if not found in cache
if (customer == null)
{
customer = FetchCustomerFromDB("ALFKI");
// Create a new CacheItem
var cacheItem = new CacheItem(customer);
// Specify the group
cacheItem.Group = "East Coast Customers";
// Add customer object to cache with group
cache.Add(customerKey, cacheItem);
}
// CacheItem is successfully added in the cache with group
// Precondition: Cache is already connected
// Create a unique cache key for this customer.
String customerKey = "Customer:ALFKI";
// If customer is not found in the cache, fetch from the database and add to cache
if (customer == null) {
Customer customer = fetchCustomerFromDB("Customer:ALFKI");
// Create a new CacheItem to store the customer with metadata
CacheItem cacheItem = new CacheItem(customer);
// Specify the group for the cache item
cacheItem.setGroup("East Coast Customers");
System.out.println("Group Set Successfully");
// Add customer object to cache with group and metadata
cache.insert(customerKey, cacheItem);
}
// CacheItem is successfully added in the cache with group
# Precondition: Cache is already connected
# Get customer from database
customer = fetch_customer_from_db()
# Create a unique cache key for this customer.
key = "Customers:" + customer.get_customer_id()
# Create a new CacheItem
cache_item = ncache.CacheItem(customer)
# Specify the group
cache_item.set_group("Important Customers")
# Add customer object to cache with group
version = cache.insert(key, cache_item)
# CacheItem is successfully added in the cache with group
// Precondition: Cache is already connected
// This is an async method
// Get customer from database against given customer ID
var customer = this.fetchCustomerFromDB("ALFKI");
// Create a unique cache key for this customer.
var key = "Customers:" + customer.getCustomerID();
// Create a new CacheItem
var cacheItem = new ncache.CacheItem(customer);
// Specify the group
cacheItem.setGroup("Important Customers");
// Add customer object to cache with group
var version = await this.cache.insert(key, cacheItem);
// CacheItem is successfully added in the cache with group
// Using NCache Enterprise 4.9.1
// Precondition: Cache is already connected
string customerId = "ALFKI";
// Create a unique cache key for this customer
string customerkey = "Customer:" + customerId;
// Get the customer from cache
Customer customer = (Customer)cache.Get(customerkey);
if (customer == null)
{
// Fetch customer from DB if not found in cache
customer = FetchCustomerFromDB(customerId);
// Specify the group
string groupName = "Customer";
string subGroupName = "East Coast";
CacheItem cacheItem = new CacheItem(customer);
cacheItem.Group = groupName;
cacheItem.SubGroup = subGroupName;
// Add customer to cache with group and subgroup
cache.Add(customerkey, cacheItem);
}
// CacheItem is successfully added in the cache with group
Note
To ensure the operation is fail-safe, it is recommended to handle any potential exceptions within your application, as explained in Handling Failures.
Update Group of a CacheItem
The data group of a CacheItem
can also be updated. A CacheItem
is a custom class provided by NCache that can be used to add data to the data cache. The CacheItem
also lets you set the group as a property
of the CacheItem
.
The following example updates the group in a CacheItem
.
// Precondition: Cache is already connected
// A customer has signed in to the website from a different region, i.e., West Coast
string customerKey = $"Customer:ALFKI";
// Retrieve the cacheItem from the cache
var cacheItem = cache.GetCacheItem(customerKey);
// Specify the new group to be updated
cacheItem.Group = "West Coast Customers";
// Reinsert the cacheItem in the cache with updated groups
cache.Insert(customerKey, cacheItem);
// CacheItem is successfully added in the cache with updated group
// Precondition: Cache is already connected
// A customer has signed in to the website from a different region i.e. West Coast
String customerKey = "Customer:ALFKI";
// Retrieve the cacheItem from the cache
CacheItem cacheItem = null;
cacheItem = cache.getCacheItem(customerKey);
// Specify the new group to be updated
cacheItem.setGroup("West Coast Customers");
System.out.println("Group Set Successfully");
// Reinsert the cacheItem in the cache with updated groups
cache.insert(customerKey, cacheItem);
// CacheItem is successfully added in the cache with updated group
# Precondition: CacheItem is added with the group
# Retrieve the CacheItem with old group from the cache
key = "ALFKI"
cache_item = cache.get_cacheitem(key)
# Specify the new group to be updated
cache_item.set_group("West Coast Customers")
# Re-insert the cacheItem in the cache with updated groups
cache.insert(key, cache_item)
# CacheItem is successfully added in the cache with updated group
// Precondition: Cache is already connected
// This is an async method
// Retrieve the cacheItem from the cache
var key = "ALFKI";
var cacheItem = this.cache.getCacheItem(key);
// Re-insert the item in the cache after the removal of group
await this.cache.insert(key, cacheItem);
// Get cacheitem with the updated version
cacheItem = this.cache.getCacheItem(key);
// Specify the new group to be updated
cacheItem.setGroup("West Coast Customers");
// Re-insert the cacheItem in the cache with updated groups
await this.cache.insert(key, cacheItem);
// CacheItem is successfully added in the cache with updated group
Additional Resources
NCache provides a sample application for Groups on GitHub.
See Also
.NET: Alachisoft.NCache.Client namespace.
Java: com.alachisoft.ncache.client namespace.
Python: ncache.client class.
Node.js: Cache class.