Iskra.Core.Cache
1.0.122
dotnet add package Iskra.Core.Cache --version 1.0.122
NuGet\Install-Package Iskra.Core.Cache -Version 1.0.122
<PackageReference Include="Iskra.Core.Cache" Version="1.0.122" />
<PackageVersion Include="Iskra.Core.Cache" Version="1.0.122" />
<PackageReference Include="Iskra.Core.Cache" />
paket add Iskra.Core.Cache --version 1.0.122
#r "nuget: Iskra.Core.Cache, 1.0.122"
#:package Iskra.Core.Cache@1.0.122
#addin nuget:?package=Iskra.Core.Cache&version=1.0.122
#tool nuget:?package=Iskra.Core.Cache&version=1.0.122
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.122)
- 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.122 | 178 | 8/28/2025 |
1.0.121 | 198 | 8/26/2025 |
1.0.120 | 269 | 8/25/2025 |
1.0.119 | 142 | 8/21/2025 |
1.0.118 | 128 | 8/19/2025 |
1.0.117 | 129 | 8/18/2025 |
1.0.116 | 144 | 8/12/2025 |
1.0.115 | 120 | 7/11/2025 |
1.0.114 | 118 | 7/11/2025 |
1.0.113 | 124 | 7/11/2025 |
1.0.112 | 150 | 7/10/2025 |
1.0.111 | 155 | 6/18/2025 |
1.0.110 | 236 | 6/9/2025 |
1.0.109 | 187 | 6/3/2025 |
1.0.108 | 159 | 5/26/2025 |
1.0.107 | 158 | 5/26/2025 |
1.0.105 | 124 | 5/23/2025 |
1.0.104 | 189 | 5/22/2025 |
1.0.102 | 521 | 4/16/2025 |
1.0.101 | 205 | 4/16/2025 |
1.0.100 | 208 | 4/16/2025 |
1.0.99 | 239 | 4/16/2025 |
1.0.98 | 203 | 4/15/2025 |
1.0.97 | 222 | 4/14/2025 |
1.0.96 | 205 | 4/14/2025 |
1.0.95 | 191 | 4/14/2025 |
1.0.94 | 400 | 4/1/2025 |
1.0.93 | 162 | 4/1/2025 |
1.0.92 | 172 | 3/27/2025 |
1.0.91 | 141 | 3/26/2025 |
1.0.90 | 470 | 3/26/2025 |
1.0.89 | 477 | 3/25/2025 |
1.0.88 | 485 | 3/25/2025 |
1.0.86 | 206 | 3/19/2025 |
1.0.85 | 154 | 3/19/2025 |
1.0.84 | 181 | 3/13/2025 |
1.0.83 | 184 | 3/13/2025 |
1.0.82 | 164 | 3/12/2025 |
1.0.81 | 157 | 3/12/2025 |
1.0.80 | 191 | 3/12/2025 |
1.0.79 | 224 | 3/6/2025 |
1.0.78 | 213 | 3/6/2025 |
1.0.77 | 255 | 3/6/2025 |
1.0.76 | 224 | 3/6/2025 |
1.0.75 | 235 | 3/3/2025 |
1.0.74 | 166 | 2/27/2025 |
1.0.73 | 126 | 2/27/2025 |
1.0.72 | 126 | 2/27/2025 |
1.0.71 | 141 | 2/26/2025 |
1.0.70 | 124 | 2/26/2025 |
1.0.69 | 128 | 2/26/2025 |
1.0.68 | 113 | 2/26/2025 |
1.0.67 | 170 | 2/21/2025 |
1.0.66 | 180 | 2/20/2025 |
1.0.65 | 142 | 2/20/2025 |
1.0.64 | 133 | 2/20/2025 |
1.0.63 | 122 | 2/20/2025 |
1.0.62 | 131 | 2/20/2025 |
1.0.61 | 132 | 2/19/2025 |
1.0.60 | 138 | 2/19/2025 |
1.0.59 | 121 | 2/18/2025 |
1.0.58 | 124 | 2/17/2025 |
1.0.57 | 142 | 2/14/2025 |