Iskra.Core.Cache
1.0.115
See the version list below for details.
dotnet add package Iskra.Core.Cache --version 1.0.115
NuGet\Install-Package Iskra.Core.Cache -Version 1.0.115
<PackageReference Include="Iskra.Core.Cache" Version="1.0.115" />
<PackageVersion Include="Iskra.Core.Cache" Version="1.0.115" />
<PackageReference Include="Iskra.Core.Cache" />
paket add Iskra.Core.Cache --version 1.0.115
#r "nuget: Iskra.Core.Cache, 1.0.115"
#:package Iskra.Core.Cache@1.0.115
#addin nuget:?package=Iskra.Core.Cache&version=1.0.115
#tool nuget:?package=Iskra.Core.Cache&version=1.0.115
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.115)
- 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.124 | 73 | 9/26/2025 |
1.0.123 | 115 | 9/24/2025 |
1.0.122 | 204 | 8/28/2025 |
1.0.121 | 221 | 8/26/2025 |
1.0.120 | 291 | 8/25/2025 |
1.0.119 | 177 | 8/21/2025 |
1.0.118 | 159 | 8/19/2025 |
1.0.117 | 159 | 8/18/2025 |
1.0.116 | 173 | 8/12/2025 |
1.0.115 | 135 | 7/11/2025 |
1.0.114 | 133 | 7/11/2025 |
1.0.113 | 140 | 7/11/2025 |
1.0.112 | 165 | 7/10/2025 |
1.0.111 | 166 | 6/18/2025 |
1.0.110 | 251 | 6/9/2025 |
1.0.109 | 203 | 6/3/2025 |
1.0.108 | 174 | 5/26/2025 |
1.0.107 | 173 | 5/26/2025 |
1.0.105 | 129 | 5/23/2025 |
1.0.104 | 208 | 5/22/2025 |
1.0.102 | 600 | 4/16/2025 |
1.0.101 | 220 | 4/16/2025 |
1.0.100 | 223 | 4/16/2025 |
1.0.99 | 255 | 4/16/2025 |
1.0.98 | 218 | 4/15/2025 |
1.0.97 | 233 | 4/14/2025 |
1.0.96 | 226 | 4/14/2025 |
1.0.95 | 202 | 4/14/2025 |
1.0.94 | 434 | 4/1/2025 |
1.0.93 | 163 | 4/1/2025 |
1.0.92 | 183 | 3/27/2025 |
1.0.91 | 152 | 3/26/2025 |
1.0.90 | 481 | 3/26/2025 |
1.0.89 | 488 | 3/25/2025 |
1.0.88 | 496 | 3/25/2025 |
1.0.86 | 207 | 3/19/2025 |
1.0.85 | 155 | 3/19/2025 |
1.0.84 | 194 | 3/13/2025 |
1.0.83 | 195 | 3/13/2025 |
1.0.82 | 165 | 3/12/2025 |
1.0.81 | 168 | 3/12/2025 |
1.0.80 | 192 | 3/12/2025 |
1.0.79 | 224 | 3/6/2025 |
1.0.78 | 223 | 3/6/2025 |
1.0.77 | 273 | 3/6/2025 |
1.0.76 | 242 | 3/6/2025 |
1.0.75 | 243 | 3/3/2025 |
1.0.74 | 184 | 2/27/2025 |
1.0.73 | 138 | 2/27/2025 |
1.0.72 | 132 | 2/27/2025 |
1.0.71 | 159 | 2/26/2025 |
1.0.70 | 139 | 2/26/2025 |
1.0.69 | 147 | 2/26/2025 |
1.0.68 | 121 | 2/26/2025 |
1.0.67 | 178 | 2/21/2025 |
1.0.66 | 198 | 2/20/2025 |
1.0.65 | 158 | 2/20/2025 |
1.0.64 | 151 | 2/20/2025 |
1.0.63 | 140 | 2/20/2025 |
1.0.62 | 149 | 2/20/2025 |
1.0.61 | 150 | 2/19/2025 |
1.0.60 | 146 | 2/19/2025 |
1.0.59 | 121 | 2/18/2025 |
1.0.58 | 134 | 2/17/2025 |
1.0.57 | 142 | 2/14/2025 |