Iskra.Core.Cache 1.0.58

There is a newer version of this package available.
See the version list below for details.
dotnet add package Iskra.Core.Cache --version 1.0.58                
NuGet\Install-Package Iskra.Core.Cache -Version 1.0.58                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Iskra.Core.Cache" Version="1.0.58" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Iskra.Core.Cache --version 1.0.58                
#r "nuget: Iskra.Core.Cache, 1.0.58"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Iskra.Core.Cache as a Cake Addin
#addin nuget:?package=Iskra.Core.Cache&version=1.0.58

// Install Iskra.Core.Cache as a Cake Tool
#tool nuget:?package=Iskra.Core.Cache&version=1.0.58                

Iskra.Core.Cache

Обзор

Библиотека предназначена для управления распределенным кэшированием в приложениях .NET. Она предоставляет инструменты для конфигурации, хранения и извлечения данных из кэша с использованием различных стратегий истечения времени жизни.

Основные Компоненты

  1. Конфигурация Кэша

    • IskraCacheOptionsPostConfigure: Обеспечивает пост-конфигурацию опций кэша на основе конфигурационных файлов (например, appsettings.json).
    • ServiceCollectionExtensions.AddIskraCache: Метод расширения для регистрации сервисов кэширования в контейнере зависимостей.
  2. Фабрика Опций Кэша

    • IskraCacheOptionsFactory: Предоставляет методы для получения настроек кэша для конкретных типов сущностей, проверяя их наличие и корректность.
  3. Сервис Кэширования

    • IskraDistributedCache: Реализует интерфейс IIskraDistributedCache для работы с распределенным кэшем.
      • Методы:
        • GetAsync<TCacheEntity>: Извлекает данные из кэша по ключу, десериализует их и возвращает объект типа TCacheEntity.
        • SetAsync<TCacheEntity>: Сериализует объект TCacheEntity и сохраняет его в кэше с заданными опциями истечения времени жизни.
  4. Интерфейсы

    • IIskraCacheOptionsFactory: Определяет методы для получения настроек кэша для конкретных типов сущностей.
    • IIskraDistributedCache: Определяет методы для работы с распределенным кэшем, включая получение и установку данных.
  5. Абстракции

    • ICacheEntity: Маркерный интерфейс, его должны реализовывать все сущности, которые могут быть закэшированы.

Функциональные Возможности

  1. Конфигурируемость

    • Настройки кэша определяются в конфигурационных файлах приложения.
    • Поддержка различных стратегий истечения времени жизни (абсолютное и слайдинговое).
  2. Распределенное Кэширование

    • Использование распределенного кэша для хранения данных, что позволяет масштабировать приложение без потери доступности кэшированных данных.
  3. Типобезопасность

    • Методы GetAsync и SetAsync параметризованы типом сущности, обеспечивая безопасность типов и упрощающую работу с данными из кэша.
  4. Обработка Ошибок

    • Исключения NoCacheDataException и OptionsValidationException предоставляют информацию о проблемах при работе с кэшем или отсутствии настроек.

Использование

Для использования библиотеки необходимо:

  1. Добавить пакет в проект.
  2. Зарегистрировать сервисы кэширования в контейнере зависимостей:
    using Microsoft.Extensions.DependencyInjection;
    
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            // Другие регистрации сервисов
    
            services.AddIskraCache();
        }
    }
    
    
  3. Настроить опции кэша в 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"
    }
  }
}

  1. Создать классы сущностей, которые будут кэшироваться:
   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; }
   }

  1. Внедрять и использовать интерфейс 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Iskra.Core.Cache:

Package Downloads
Iskra.Core.Auth

Настройка авторизации в Keycloak.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.67 39 2/21/2025
1.0.66 67 2/20/2025
1.0.65 61 2/20/2025
1.0.64 53 2/20/2025
1.0.63 47 2/20/2025
1.0.62 50 2/20/2025
1.0.61 51 2/19/2025
1.0.60 56 2/19/2025
1.0.59 63 2/18/2025
1.0.58 68 2/17/2025
1.0.57 82 2/14/2025