@ -19,7 +19,7 @@ See [ASP.NET Core's distributed caching document](https://docs.microsoft.com/en-
## IDistributedCache<TCacheItem> Interface
ABP framework defines the generic `IDistributedCache<TCacheItem>` interface in the [Volo.Abp.Caching](https://www.nuget.org/packages/Volo.Abp.Caching/) package. `TCacheItem` is the type of the object stored in the cache.
ABP framework defines the generic `IDistributedCache<TCacheItem>` interface in the [Volo.Abp.Caching](https://www.nuget.org/packages/Volo.Abp.Caching/) package. `TCacheItem` is the type of the object stored in the cache.
`IDistributedCache<TCacheItem>` solves the difficulties explained above;
@ -80,6 +80,111 @@ public class BookService : ITransientDependency
Other methods of the `IDistributedCache<BookCacheItem>` are same as ASP.NET Core's `IDistributedCache` interface, so you can refer [it's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed).
ABP framework also defines the generic `IDistributedCache<TCacheItem, TCacheKey>` interface in the [Volo.Abp.Caching](https://www.nuget.org/packages/Volo.Abp.Caching/) package. `TCacheItem` is the type of the object and `TCacheKey` as the type of the key stored in the cache. `IDistributedCache<TCacheItem>` interface is a type of `IDistributedCache<TCacheItem, string>` for simplified usage.
* This sample service uses the `GetOrAddAsync()` method using complex object as a cache key to cache the same object.
* **Important note to use complex object as cache key** is to override the `ToString` method of your object since default `ToString` method returns the class name and will be same for all the objects.
* Since cache explicitly implemented as using complex `BookCacheItem` as cache key, `BookCacheItem` type value passed to `_cache_GetOrAddAsync()` method.
* Any class can be used as cache key while keeping on mind to override the `ToString` method of the class to produce a unique string.