Iskra.Core.Cache 1.0.63

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.63
                    
NuGet\Install-Package Iskra.Core.Cache -Version 1.0.63
                    
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.63" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Iskra.Core.Cache" Version="1.0.63" />
                    
Directory.Packages.props
<PackageReference Include="Iskra.Core.Cache" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Iskra.Core.Cache --version 1.0.63
                    
#r "nuget: Iskra.Core.Cache, 1.0.63"
                    
#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.
#:package Iskra.Core.Cache@1.0.63
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Iskra.Core.Cache&version=1.0.63
                    
Install as a Cake Addin
#tool nuget:?package=Iskra.Core.Cache&version=1.0.63
                    
Install as a Cake Tool

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.  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. 
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.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