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 | 313 | 12/16/2025 |
| 1.0.135 | 161 | 12/12/2025 |
| 1.0.134 | 384 | 11/17/2025 |
| 1.0.133 | 377 | 11/17/2025 |
| 1.0.132 | 287 | 11/14/2025 |
| 1.0.131 | 237 | 11/6/2025 |
| 1.0.130 | 233 | 11/5/2025 |
| 1.0.129 | 211 | 10/31/2025 |
| 1.0.128 | 211 | 10/31/2025 |
| 1.0.127 | 196 | 10/31/2025 |
| 1.0.126 | 225 | 10/21/2025 |
| 1.0.125 | 226 | 10/16/2025 |
| 1.0.124 | 191 | 9/26/2025 |
| 1.0.123 | 222 | 9/24/2025 |
| 1.0.122 | 271 | 8/28/2025 |
| 1.0.121 | 287 | 8/26/2025 |
| 1.0.120 | 349 | 8/25/2025 |
| 1.0.119 | 258 | 8/21/2025 |
| 1.0.118 | 222 | 8/19/2025 |
| 1.0.117 | 222 | 8/18/2025 |