LiteX.Cache
3.0.0
Provide Cache service for any type of application (Asp.Net Core, .Net Standard 2.x). Having a default implementation to wrap the MemoryCache.
See the version list below for details.
Install-Package LiteX.Cache -Version 3.0.0
dotnet add package LiteX.Cache --version 3.0.0
<PackageReference Include="LiteX.Cache" Version="3.0.0" />
paket add LiteX.Cache --version 3.0.0
#r "nuget: LiteX.Cache, 3.0.0"
LiteXCache
Provide Cache service for any type of application (Asp.Net Core, .Net Standard 2.x). Having a default implementation to wrap the MemoryCache.
Add a dependency
Nuget
Run the nuget command for installing the client as,
Install-Package LiteX.Cache
Configuration
Startup Configuration
public class Startup
{
public IConfiguration configuration { get; }
public Startup(IConfiguration configuration)
{
this.configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddLiteXCache(configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
}
Usage
/// <summary>
/// Customer controller
/// </summary>
public class CustomerController : Controller
{
#region Fields
private readonly ICacheManager _cacheManager;
private readonly IStaticCacheManager _staticCacheManager;
#endregion
#region Ctor
/// <summary>
/// Ctor
/// </summary>
/// <param name="cacheManager"></param>
/// <param name="staticCacheManager"></param>
public CustomerController(ICacheManager cacheManager, IStaticCacheManager staticCacheManage)
{
_cacheManager = cacheManager;
_staticCacheManager = staticCacheManager;
_emailSender = emailSender;
_blobService = blobService;
}
#endregion
#region Methods
/// <summary>
/// Get a cached item. If it's not in the cache yet, then load and cache it
/// </summary>
/// <returns></returns>
public IActionResult CacheCustomers()
{
IList<Customer> customers;
//cacheable key
var key = "customers";
customers = _staticCacheManager.Get(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>
public IActionResult CacheCustomers(int cacheTime)
{
IList<Customer> customers;
//cacheable key
var cacheKey = "customers";
customers = _staticCacheManager.Get(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>
public IActionResult CacheCustomer(int customerId)
{
Customer customer = null;
var cacheKey = $"customer-{customerId}";
customer = _cacheManager.Get<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);
}
return Ok(customer);
}
/// <summary>
/// Remove cached item(s).
/// </summary>
/// <returns></returns>
public IActionResult RemoveCachedCustomers()
{
//cacheable key
var cacheKey = "customers";
_cacheManager.Remove(cacheKey);
// OR
var cacheKeyPattern = "customers-";
// remove by pattern
_cacheManager.RemoveByPattern(cacheKeyPattern);
return Ok();
}
#endregion
#region Utilities
private IList<Customer> GetCustomers()
{
IList<Customer> customers = new List<Customer>();
customers.Add(new Customer() { Id = 1, Username = "ashish", Email = "toaashishpatel@outlook.com" });
return customers;
}
private Customer GetCustomerById(int id)
{
Customer customer = null;
customer = GetCustomers().ToList().FirstOrDefault(x => x.Id == id);
return customer;
}
#endregion
}
LiteXCache
Provide Cache service for any type of application (Asp.Net Core, .Net Standard 2.x). Having a default implementation to wrap the MemoryCache.
Add a dependency
Nuget
Run the nuget command for installing the client as,
Install-Package LiteX.Cache
Configuration
Startup Configuration
public class Startup
{
public IConfiguration configuration { get; }
public Startup(IConfiguration configuration)
{
this.configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddLiteXCache(configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
}
Usage
/// <summary>
/// Customer controller
/// </summary>
public class CustomerController : Controller
{
#region Fields
private readonly ICacheManager _cacheManager;
private readonly IStaticCacheManager _staticCacheManager;
#endregion
#region Ctor
/// <summary>
/// Ctor
/// </summary>
/// <param name="cacheManager"></param>
/// <param name="staticCacheManager"></param>
public CustomerController(ICacheManager cacheManager, IStaticCacheManager staticCacheManage)
{
_cacheManager = cacheManager;
_staticCacheManager = staticCacheManager;
_emailSender = emailSender;
_blobService = blobService;
}
#endregion
#region Methods
/// <summary>
/// Get a cached item. If it's not in the cache yet, then load and cache it
/// </summary>
/// <returns></returns>
public IActionResult CacheCustomers()
{
IList<Customer> customers;
//cacheable key
var key = "customers";
customers = _staticCacheManager.Get(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>
public IActionResult CacheCustomers(int cacheTime)
{
IList<Customer> customers;
//cacheable key
var cacheKey = "customers";
customers = _staticCacheManager.Get(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>
public IActionResult CacheCustomer(int customerId)
{
Customer customer = null;
var cacheKey = $"customer-{customerId}";
customer = _cacheManager.Get<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);
}
return Ok(customer);
}
/// <summary>
/// Remove cached item(s).
/// </summary>
/// <returns></returns>
public IActionResult RemoveCachedCustomers()
{
//cacheable key
var cacheKey = "customers";
_cacheManager.Remove(cacheKey);
// OR
var cacheKeyPattern = "customers-";
// remove by pattern
_cacheManager.RemoveByPattern(cacheKeyPattern);
return Ok();
}
#endregion
#region Utilities
private IList<Customer> GetCustomers()
{
IList<Customer> customers = new List<Customer>();
customers.Add(new Customer() { Id = 1, Username = "ashish", Email = "toaashishpatel@outlook.com" });
return customers;
}
private Customer GetCustomerById(int id)
{
Customer customer = null;
customer = GetCustomers().ToList().FirstOrDefault(x => x.Id == id);
return customer;
}
#endregion
}
Release Notes
Having a default implementation to wrap the MemoryCache. Advanced configuration for ASP.NET Core application.
Dependencies
-
.NETStandard 2.0
- Microsoft.AspNetCore.Http (>= 2.0.2)
- Microsoft.Extensions.Caching.Memory (>= 2.0.1)
- Microsoft.Extensions.Configuration (>= 2.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 2.0.0)
- Microsoft.Extensions.DependencyInjection (>= 2.0.0)
- Microsoft.Extensions.Primitives (>= 2.0.0)
Used By
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version History
Version | Downloads | Last updated |
---|---|---|
9.0.0 | 97 | 1/1/2021 |
8.1.0 | 522 | 4/4/2020 |
8.0.0 | 1,109 | 9/19/2019 |
7.0.3 | 1,718 | 1/31/2019 |
7.0.2 | 1,545 | 8/25/2018 |
7.0.1 | 423 | 8/9/2018 |
7.0.0 | 497 | 6/30/2018 |
6.2.0 | 416 | 6/23/2018 |
6.1.0 | 489 | 6/18/2018 |
6.0.0 | 681 | 6/2/2018 |
5.0.0 | 585 | 5/7/2018 |
4.0.1 | 615 | 5/4/2018 |
4.0.0 | 623 | 5/4/2018 |
3.0.0 | 608 | 4/25/2018 |
2.0.0 | 570 | 4/22/2018 |
1.0.0 | 648 | 4/20/2018 |