如果没有基本的 CRUD 操作,缓存将毫无用处。 由于缓存是键值存储,因此您需要 加, 取回 和 去掉 一直缓存数据。 因此,这些基于键的 CRUD(创建、删除、更新、删除)或基本操作使您的缓存易于访问和使用。
NCache 由于其在应用程序中的分布式数据缓存已被广泛采用 线性可扩展性 和 高可用性. NCache 提供各种 CRUD API 来执行缓存数据的基本操作。 我们将看到您在电子商务应用程序中使用这些操作是多么容易 NCache 存储经常使用的数据。
基本 CRUD 操作
缓存的基本目的是充当应用程序的临时数据存储,因此无论您需要什么数据,您都可以 ping 缓存而不是完全访问数据库。 让我们来看看基本的 CRUD 操作 NCache 支持。 这是一个简短的清单 NCache 提供:
API | 课程描述 | 句法 |
地址 | 将新数据添加到缓存中 | 添加(键,值) |
插页 | 如果键已存在于缓存中,则更新值,否则将项添加为新项 | 插入(键,值) |
删除 | 从缓存中删除指定的键并返回值 | 删除(键) |
积极 | 检索提供的键的值 | 获取(键) |
但是等等,它不是一个简单的键值存储。 除了, NCache 还允许您缓存自定义对象, JSON 对象, 数据结构 并对它们进行操作。 因此,您拥有完整的存储和复制平台,可以对各种数据执行基本的 CRUD 操作,并具有最大的灵活性,使用 NCache.
NCache 支持同步和异步操作。 同步操作 对于敏感更新至关重要,您必须确保您执行的操作已经发生,然后再继续进行。 换句话说,这样的操作是顺序的。 另一方面, 异步操作 更加灵活并在后台执行,同时控制立即发送回客户端。
需要注意的是,所有 NCache SDK 客户端对象和 API 是线程安全的并且彼此独立。 这确保重用客户端实例始终是安全的,即使跨线程也是如此。
让我们深入了解不同类型的操作 NCache 支持您无缝地对数据执行。 在这里,我将向您展示如何使用自定义对象的基本操作。
中的操作类型 NCache
NCache 允许对单个项目或大量项目进行 CRUD 操作。 同时,支持的操作模式有同步和异步。 NCache 支持同步和异步操作。 让我们深入讨论不同类型的操作 NCache 支持,让您无缝地执行数据。
原子操作
对单个键值对执行的所有操作都归类为原子操作。 因此,此类操作需要对每个项目进行一次缓存调用。 假设您有一个电子商务应用程序,并且您想将新产品添加到缓存的库存中,获取并更新其值,然后将其从缓存中删除 NCache CRUD API。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-condition: Cache is already connected // Get product from database var product = GetProductFromDB(1001); string key = $"Product:{product.ProductID}"; // Add item in the cache. Add can be replaced with Insert depending on your requirement. CacheItemVersion version = cache.Add(key, product); // Retrieve cached item from the cache var retrievedItem = cache.Get(key); // Update the price of retrieved product retrievedItem.Price = 500; cache.Insert(key, retrievedItem); // Remove item from the cache cache.Remove(key); |
需要注意的是,如果缓存中已经存在相同的键,则不能再次添加。 为此,您可以使用 Insert 覆盖现有键的值。
批量操作
由于您可能需要在应用程序中同时执行多个操作, NCache 允许您在一次调用中对一大块数据执行 CRUD 操作。 这些操作旨在实现更好的性能,因为它们通过在单个缓存调用中完成大部分工作来减少对远程服务器的网络调用。
例如,如果您想在缓存中添加、更新或删除 100 个产品项目,您可以通过一次批量调用 加, 更新 or 去掉 这些项目而不是调用相关 API 100 次。 让我们看看如何使用单个批量调用来实现此目的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Pre-condition: Cache is already connected // Get products from database Product[] products = FetchProductsFromDB(); IDictionary<string, CacheItem> dictionary = new Dictionary<string, CacheItem>(); foreach (var prod in products) { string key = $"Product:{prod.ProductID}"; var cacheItem = new CacheItem(prod); dictionary.Add(key, cacheItem); } // Inserting items in the cache IDictionary result = cache.InsertBulk(dictionary); // Retrieve items in bulk IDictionary<string, Product> retrievedItems = cache.GetBulk(keys); // Perform business logic here // Remove a chunk of keys from the cache cache.RemoveBulk(keys); |
同步操作
同步操作对于敏感更新非常重要,您必须确保您执行的操作已经发生,然后再继续进行。 换句话说,这样的操作是顺序的。 例如,您将使用同步操作在大甩卖之前更新您的股票价格,以确保价格已成功更新。
这些操作作为阻塞调用工作,客户端必须等待服务器对已执行操作的响应,然后再进行进一步处理。 发生的情况是,在添加项目(或引发异常)之前,您的应用程序会等待执行操作,以便取回控制权。 如果没有特别说明,基本的 CRUD 操作默认是同步的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Pre-condition: Cache is already connected // Get product from database var product = GetProductFromDB(1001); string key = $"Product:{product.ProductID}"; // Add CacheItem to cache CacheItemVersion version = cache.Add(key, cacheItem); // Retrieve the cached item from the cache CacheItem retrievedItem = cache.GetCacheItem(key); // Update the price of retrieved product product.Price = 500; retrievedItem = new CacheItem(product); cache.Insert(key, retrievedItem); // Remove item from the cache cache.Remove(key); |
异步操作
异步操作更灵活,并且在后台执行,同时立即将控件发送回客户端。 您可以在您的电子商务应用程序中充分利用此功能,在需要执行更新产品描述等次要操作的情况下。 更改基本信息不一定需要跟踪,无论如何都不是高优先级。
NCache 支持多个异步重载来执行原子操作。 让我们看看如何使用 AddAsync
, InsertAsync
及 RemoveAsync
用于异步添加、更新和删除应用程序数据的 API。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Pre-condition: Cache is already connected // Get product from database var product = GetProductFromDB(1001); string key = $"Product:{product.ProductID}"; // Add item in the cache. AddAsync can be replaced with InsertAsync depending on your requirement. Task task = cache.AddAsync(key, product); // Wait before fetching data // Retrieve cached item from the cache var retrievedItem = cache.Get(key); // Update the price of retrieved product retrievedItem.Price = 500; // Add Product object to cache cache.InsertAsync(key, retrievedItem); // Remove item from the cache cache.RemoveAsync(key); |
结论
由于您现在已经熟悉了基本的 CRUD 操作 NCache,您可以轻松地开始使用它们来提高分布式应用程序的性能。 您对数据库所做的事情现在可以简单地复制到您的缓存中,并且由于响应时间显着减少,结果是增强了用户体验。 你可以看到 的高级功能 NCache 广泛用于您的 Web 应用程序、微服务、库和控制台应用程序。所以,下载 NCache 现在可以免费试用以探索更多!