![]() |
VOOZH | about |
dotnet add package LiteX.Cache.Core --version 9.0.0
NuGet\Install-Package LiteX.Cache.Core -Version 9.0.0
<PackageReference Include="LiteX.Cache.Core" Version="9.0.0" />
<PackageVersion Include="LiteX.Cache.Core" Version="9.0.0" />Directory.Packages.props
<PackageReference Include="LiteX.Cache.Core" />Project file
paket add LiteX.Cache.Core --version 9.0.0
#r "nuget: LiteX.Cache.Core, 9.0.0"
#:package LiteX.Cache.Core@9.0.0
#addin nuget:?package=LiteX.Cache.Core&version=9.0.0Install as a Cake Addin
#tool nuget:?package=LiteX.Cache.Core&version=9.0.0Install as a Cake Tool
LiteXCache is simple yet powerful and very high-performance cache mechanism and incorporating both synchronous and asynchronous usage with some advanced usages of caching which can help us to handle caching more easier!
Provide Cache service for any type of application (.NET Core, .NET Standard).
Having a default/generic implementation to wrap the MemoryCache, Redis Cache, Memcached, SQLite, HTTP Request cache and independent on the underlying caching framework(s).
Very simple yet advanced configuration. Easily migrate or switch between one to another provider with no code breaking changes. Minimal (one line) code configuration is required.
It supports various cache providers and implements many advanced features. You can also write your own and extend it also extend existing providers.
LiteXCache is an interface to unify the programming model for various cache providers.
Better use of Http request cache for other external cache providers (Redis, Memcached, SQLite etc).
The Core library contains all base interfaces and tools. One should install at least one other LiateXCache package to get cache handle implementations.
The main goal of the LiteXCache package is to make developer's life easier to handle even very complex caching scenarios.
Choose one kind of caching type that you needs and install it via Nuget. To install LiteXCache, run the following command in the Package Manager Console
PM> Install-Package LiteX.Cache
PM> Install-Package LiteX.Cache.Redis
PM> Install-Package LiteX.Cache.Memcached
PM> Install-Package LiteX.Cache.SQLite
/// <summary>
/// Customer controller
/// </summary>
[Route("api/[controller]")]
public class CustomerController : Controller
{
#region Fields
private readonly ILiteXCacheManager _cacheManager;
#endregion
#region Ctor
/// <summary>
/// Ctor
/// </summary>
/// <param name="cacheManager"></param>
public CustomerController(ILiteXCacheManager cacheManager)
{
_cacheManager = cacheManager;
}
#endregion
#region Methods
/// <summary>
/// Get Cache Provider Type
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("get-cache-provider-type")]
public IActionResult GetCacheProviderType()
{
return Ok(_cacheManager.CacheProviderType.ToString());
}
/// <summary>
/// Get a cached item. If it's not in the cache yet, then load and cache it
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("cache-all")]
public IActionResult CacheCustomers()
{
IList<Customer> customers;
//cacheable key
var key = "customers";
customers = _cacheManager.Get(key, () =>
{
var result = new List<Customer>();
result = GetCustomers().ToList();
return result;
});
////Async
//customers = await _cacheManager.GetAsync(key, () =>
//{
// var result = new List<Customer>();
// result = GetCustomers().ToList();
// return result;
//});
return Ok(customers);
}
/// <summary>
/// Get a cached item. If it's not in the cache yet, then load and cache it
/// </summary>
/// <param name="cacheTime">Cache time in minutes (0 - do not cache)</param>
/// <returns></returns>
[HttpGet]
[Route("cache-all-specific-time/{cacheTime}")]
public IActionResult CacheCustomers(int cacheTime)
{
IList<Customer> customers;
//cacheable key
var cacheKey = "customers";
customers = _cacheManager.Get(cacheKey, cacheTime, () =>
{
var result = new List<Customer>();
result = GetCustomers().ToList();
return result;
});
////Async
//customers = await _cacheManager.GetAsync(cacheKey, cacheTime, () =>
//{
// var result = new List<Customer>();
// result = GetCustomers().ToList();
// return result;
//});
return Ok(customers);
}
/// <summary>
/// Get a cached item. If it's not in the cache yet, then load and cache it manually
/// </summary>
/// <param name="customerId"></param>
/// <returns></returns>
[HttpGet]
[Route("cache-single-customer/{customerId}")]
public IActionResult CacheCustomer(int customerId)
{
Customer customer = null;
var cacheKey = $"customer-{customerId}";
customer = _cacheManager.Get<Customer>(cacheKey);
////Async
//customer = await _cacheManager.GetAsync<Customer>(cacheKey);
if (customer == default(Customer))
{
//no value in the cache yet
//let's load customer and cache the result
customer = GetCustomerById(customerId);
_cacheManager.Set(cacheKey, customer, 60);
////Async
//await _cacheManager.SetAsync(cacheKey, customer, 60);
}
return Ok(customer);
}
/// <summary>
/// Remove cached item(s).
/// </summary>
/// <returns></returns>
[HttpDelete]
[Route("remove-all-cached")]
public IActionResult RemoveCachedCustomers()
{
//cacheable key
var cacheKey = "customers";
_cacheManager.Remove(cacheKey);
////Async
//await _cacheManager.RemoveAsync(cacheKey);
// OR
var cacheKeyPattern = "customers-";
// remove by pattern
_cacheManager.RemoveByPattern(cacheKeyPattern);
////Async
//await _cacheManager.RemoveByPatternAsync(cacheKeyPattern);
return Ok();
}
/// <summary>
/// Clear-Flush all cached item(s).
/// </summary>
/// <returns></returns>
[HttpDelete]
[Route("clear-cached")]
public IActionResult ClearCachedItems()
{
_cacheManager.Clear();
////Async
//await _cacheManager.ClearAsync();
return Ok();
}
#endregion
#region Utilities
private IList<Customer> GetCustomers(int total = 1000)
{
IList<Customer> customers = new List<Customer>();
for (int i = 1; i < (total + 1); i++)
{
customers.Add(new Customer() { Id = i, Username = $"customer_{i}", Email = $"customer_{i}@example.com" });
}
return customers;
}
private Customer GetCustomerById(int id)
{
Customer customer = null;
customer = GetCustomers().ToList().FirstOrDefault(x => x.Id == id);
return customer;
}
#endregion
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 is compatible. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 is compatible. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 4 NuGet packages that depend on LiteX.Cache.Core:
| Package | Downloads |
|---|---|
|
LiteX.Cache
LiteX.Cache is a InMemory caching based on on LiteX.Cache.Core and Microsoft.Extensions.Caching.Memory. Small library for manage cache with InMemory. A quick setup for InMemory Caching. Wrapper library is just written for the purpose to bring a new level of ease to the developers who deal with InMemory Cache integration with your system. LiteXCache is simple yet powerful and very high-performance cache mechanism and incorporating both synchronous and asynchronous usage with some advanced usages of caching which can help us to handle caching more easier! Provide Cache service for any type of application (.NET 5, .NET Core, .NET Standard). Very simple yet advanced configuration. Minimal (one line) code configuration is required. |
|
|
LiteX.Cache.Redis
Distributed caching based on StackExchange.Redis and Redis. Small library for manage cache with Redis. A quick setup for Redis. Wrapper library is just written for the purpose to bring a new level of ease to the developers who deal with Redis Cache integration with your system. LiteXCache is simple yet powerful and very high-performance cache mechanism and incorporating both synchronous and asynchronous usage with some advanced usages of caching which can help us to handle caching more easier! Provide Cache service for any type of application (.NET 5, .NET Core, .NET Standard). Very simple yet advanced configuration. Minimal (one line) code configuration is required. |
|
|
LiteX.Cache.Memcached
Distributed caching based on Memcached. Small library for manage cache with Memcached. A quick setup for Memcached. Wrapper library is just written for the purpose to bring a new level of ease to the developers who deal with Memcached Cache integration with your system. LiteXCache is simple yet powerful and very high-performance cache mechanism and incorporating both synchronous and asynchronous usage with some advanced usages of caching which can help us to handle caching more easier! Provide Cache service for any type of application (.NET 5, .NET Core, .NET Standard). Very simple yet advanced configuration. Minimal (one line) code configuration is required. |
|
|
LiteX.Cache.SQLite
SQLite caching based on SQLite database. Small library for manage cache with SQLite. A quick setup for SQLite Caching. Wrapper library is just written for the purpose to bring a new level of ease to the developers who deal with SQLite Cache integration with your system. LiteXCache is simple yet powerful and very high-performance cache mechanism and incorporating both synchronous and asynchronous usage with some advanced usages of caching which can help us to handle caching more easier! Provide Cache service for any type of application (.NET 5, .NET Core, .NET Standard). Very simple yet advanced configuration. Minimal (one line) code configuration is required. |
This package is not used by any popular GitHub repositories.
Upgrade to .NET 5.x.
Added multi-framework target support - .NET 5, .NET Core 3.1, .NET Standard 2.1 and .NET Standard 2.0
Update libraries and SDKs to latest version.
Last release notes:
-> Multiple provider support (using provider factory) - AddLiteXInMemoryCacheFactory, AddLiteXRedisCacheFactory, AddLiteXMemcachedCacheFactory, AddLiteXSQLiteCacheFactory
-> Code re-factoring and optimization changes