Iskra.Core.Cache
1.0.136
dotnet add package Iskra.Core.Cache --version 1.0.136
NuGet\Install-Package Iskra.Core.Cache -Version 1.0.136
<PackageReference Include="Iskra.Core.Cache" Version="1.0.136" />
<PackageVersion Include="Iskra.Core.Cache" Version="1.0.136" />
<PackageReference Include="Iskra.Core.Cache" />
paket add Iskra.Core.Cache --version 1.0.136
#r "nuget: Iskra.Core.Cache, 1.0.136"
#:package Iskra.Core.Cache@1.0.136
#addin nuget:?package=Iskra.Core.Cache&version=1.0.136
#tool nuget:?package=Iskra.Core.Cache&version=1.0.136
Iskra.Core.Cache
Обзор
Библиотека предназначена для управления распределенным кэшированием в приложениях .NET. Она предоставляет инструменты для конфигурации, хранения и извлечения данных из кэша с использованием различных стратегий истечения времени жизни.
Основные Компоненты
Конфигурация Кэша
IskraCacheOptionsPostConfigure: Обеспечивает пост-конфигурацию опций кэша на основе конфигурационных файлов (например,appsettings.json).ServiceCollectionExtensions.AddIskraCache: Метод расширения для регистрации сервисов кэширования в контейнере зависимостей.
Фабрика Опций Кэша
IskraCacheOptionsFactory: Предоставляет методы для получения настроек кэша для конкретных типов сущностей, проверяя их наличие и корректность.
Сервис Кэширования
IskraDistributedCache: Реализует интерфейсIIskraDistributedCacheдля работы с распределенным кэшем.- Методы:
GetAsync<TCacheEntity>: Извлекает данные из кэша по ключу, десериализует их и возвращает объект типаTCacheEntity.SetAsync<TCacheEntity>: Сериализует объектTCacheEntityи сохраняет его в кэше с заданными опциями истечения времени жизни.
- Методы:
Интерфейсы
IIskraCacheOptionsFactory: Определяет методы для получения настроек кэша для конкретных типов сущностей.IIskraDistributedCache: Определяет методы для работы с распределенным кэшем, включая получение и установку данных.
Абстракции
ICacheEntity: Маркерный интерфейс, его должны реализовывать все сущности, которые могут быть закэшированы.
Функциональные Возможности
Конфигурируемость
- Настройки кэша определяются в конфигурационных файлах приложения.
- Поддержка различных стратегий истечения времени жизни (абсолютное и слайдинговое).
Распределенное Кэширование
- Использование распределенного кэша для хранения данных, что позволяет масштабировать приложение без потери доступности кэшированных данных.
Типобезопасность
- Методы
GetAsyncиSetAsyncпараметризованы типом сущности, обеспечивая безопасность типов и упрощающую работу с данными из кэша.
- Методы
Обработка Ошибок
- Исключения
NoCacheDataExceptionиOptionsValidationExceptionпредоставляют информацию о проблемах при работе с кэшем или отсутствии настроек.
- Исключения
Использование
Для использования библиотеки необходимо:
- Добавить пакет в проект.
- Зарегистрировать сервисы кэширования в контейнере зависимостей:
using Microsoft.Extensions.DependencyInjection; public class Startup { public void ConfigureServices(IServiceCollection services) { // Другие регистрации сервисов services.AddIskraCache(); } } - Настроить опции кэша в
appsettings.jsonили другом конфигурационном файле.
{
"IskraCacheOptions": {
"User": {
"Prefix": "user",
"AbsoluteExpirationRelativeToNow": "01:00:00",
"SlidingExpiration": "00:30:00"
},
"Product": {
"Prefix": "product",
"AbsoluteExpirationRelativeToNow": "02:00:00",
"SlidingExpiration": "01:00:00"
}
}
}
- Создать классы сущностей, которые будут кэшироваться:
public class User : ICacheEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Product : ICacheEntity
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
- Внедрять и использовать интерфейс
IIskraDistributedCacheдля работы с кэшем.
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
[ApiController]
[Route("api/[controller]")]
public class CacheController : ControllerBase
{
private readonly IIskraDistributedCache _cache;
public CacheController(IIskraDistributedCache cache)
{
_cache = cache;
}
[HttpGet("user/{id}")]
public async Task<IActionResult> GetUser(int id)
{
var user = await _cache.GetAsync<User>(id);
if (user == null)
{
return NotFound();
}
return Ok(user);
}
[HttpPost("user")]
public async Task<IActionResult> SetUser([FromBody] User user)
{
await _cache.SetAsync(user.Id, user);
return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user);
}
[HttpGet("product/{id}")]
public async Task<IActionResult> GetProduct(int id)
{
var product = await _cache.GetAsync<Product>(id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
[HttpPost("product")]
public async Task<IActionResult> SetProduct([FromBody] Product product)
{
await _cache.SetAsync(product.Id, product);
return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
}
}
Заключение
Библиотека предоставляет удобный и гибкий способ управления распределенным кэшированием в приложениях .NET, обеспечивая конфигурируемость, типобезопасность и надежность работы с кэшем.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- FluentValidation (>= 11.11.0)
- Flurl.Http (>= 4.0.2)
- Iskra.Core.DataModels (>= 1.0.136)
- JetBrains.Annotations (>= 2024.3.0)
- Microsoft.Extensions.Caching.Abstractions (>= 9.0.5)
- Microsoft.Extensions.Configuration (>= 9.0.5)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.5)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.5)
- Microsoft.Extensions.DependencyInjection (>= 9.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.5)
- Microsoft.Extensions.Options (>= 9.0.5)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.5)
- Reo.Core.BaseDomainModels (>= 8.0.356)
- Reo.Core.CodeConventions (>= 8.0.356)
- Reo.Core.DataModels (>= 8.0.356)
- Reo.Core.Extensions (>= 8.0.356)
- Reo.Core.Hosting (>= 8.0.356)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Iskra.Core.Cache:
| Package | Downloads |
|---|---|
|
Iskra.Core.Auth.InvitationToken
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.136 | 281 | 12/16/2025 |
| 1.0.135 | 135 | 12/12/2025 |
| 1.0.134 | 359 | 11/17/2025 |
| 1.0.133 | 352 | 11/17/2025 |
| 1.0.132 | 262 | 11/14/2025 |
| 1.0.131 | 209 | 11/6/2025 |
| 1.0.130 | 206 | 11/5/2025 |
| 1.0.129 | 189 | 10/31/2025 |
| 1.0.128 | 181 | 10/31/2025 |
| 1.0.127 | 177 | 10/31/2025 |
| 1.0.126 | 196 | 10/21/2025 |
| 1.0.125 | 199 | 10/16/2025 |
| 1.0.124 | 167 | 9/26/2025 |
| 1.0.123 | 199 | 9/24/2025 |
| 1.0.122 | 245 | 8/28/2025 |
| 1.0.121 | 267 | 8/26/2025 |
| 1.0.120 | 330 | 8/25/2025 |
| 1.0.119 | 224 | 8/21/2025 |
| 1.0.118 | 199 | 8/19/2025 |
| 1.0.117 | 197 | 8/18/2025 |
| 1.0.116 | 211 | 8/12/2025 |
| 1.0.115 | 171 | 7/11/2025 |
| 1.0.114 | 173 | 7/11/2025 |
| 1.0.113 | 181 | 7/11/2025 |
| 1.0.112 | 196 | 7/10/2025 |
| 1.0.111 | 207 | 6/18/2025 |
| 1.0.110 | 289 | 6/9/2025 |
| 1.0.109 | 250 | 6/3/2025 |
| 1.0.108 | 210 | 5/26/2025 |
| 1.0.107 | 214 | 5/26/2025 |
| 1.0.105 | 166 | 5/23/2025 |
| 1.0.104 | 263 | 5/22/2025 |
| 1.0.102 | 793 | 4/16/2025 |
| 1.0.101 | 257 | 4/16/2025 |
| 1.0.100 | 265 | 4/16/2025 |
| 1.0.99 | 291 | 4/16/2025 |
| 1.0.98 | 250 | 4/15/2025 |
| 1.0.97 | 266 | 4/14/2025 |
| 1.0.96 | 262 | 4/14/2025 |
| 1.0.95 | 233 | 4/14/2025 |
| 1.0.94 | 489 | 4/1/2025 |
| 1.0.93 | 195 | 4/1/2025 |
| 1.0.92 | 218 | 3/27/2025 |
| 1.0.91 | 191 | 3/26/2025 |
| 1.0.90 | 510 | 3/26/2025 |
| 1.0.89 | 522 | 3/25/2025 |
| 1.0.88 | 523 | 3/25/2025 |
| 1.0.86 | 243 | 3/19/2025 |
| 1.0.85 | 184 | 3/19/2025 |
| 1.0.84 | 225 | 3/13/2025 |
| 1.0.83 | 226 | 3/13/2025 |
| 1.0.82 | 191 | 3/12/2025 |
| 1.0.81 | 204 | 3/12/2025 |
| 1.0.80 | 223 | 3/12/2025 |
| 1.0.79 | 254 | 3/6/2025 |
| 1.0.78 | 253 | 3/6/2025 |
| 1.0.77 | 314 | 3/6/2025 |
| 1.0.76 | 282 | 3/6/2025 |
| 1.0.75 | 277 | 3/3/2025 |
| 1.0.74 | 226 | 2/27/2025 |
| 1.0.73 | 173 | 2/27/2025 |
| 1.0.72 | 166 | 2/27/2025 |
| 1.0.71 | 198 | 2/26/2025 |
| 1.0.70 | 180 | 2/26/2025 |
| 1.0.69 | 186 | 2/26/2025 |
| 1.0.68 | 161 | 2/26/2025 |
| 1.0.67 | 215 | 2/21/2025 |
| 1.0.66 | 238 | 2/20/2025 |
| 1.0.65 | 186 | 2/20/2025 |
| 1.0.64 | 186 | 2/20/2025 |
| 1.0.63 | 186 | 2/20/2025 |
| 1.0.62 | 194 | 2/20/2025 |
| 1.0.61 | 187 | 2/19/2025 |
| 1.0.60 | 183 | 2/19/2025 |
| 1.0.59 | 156 | 2/18/2025 |
| 1.0.58 | 163 | 2/17/2025 |
| 1.0.57 | 173 | 2/14/2025 |