CKN.Sdk.Caching.Redis 0.0.0-alpha.0.55

This is a prerelease version of CKN.Sdk.Caching.Redis.
dotnet add package CKN.Sdk.Caching.Redis --version 0.0.0-alpha.0.55
                    
NuGet\Install-Package CKN.Sdk.Caching.Redis -Version 0.0.0-alpha.0.55
                    
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="CKN.Sdk.Caching.Redis" Version="0.0.0-alpha.0.55" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CKN.Sdk.Caching.Redis" Version="0.0.0-alpha.0.55" />
                    
Directory.Packages.props
<PackageReference Include="CKN.Sdk.Caching.Redis" />
                    
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 CKN.Sdk.Caching.Redis --version 0.0.0-alpha.0.55
                    
#r "nuget: CKN.Sdk.Caching.Redis, 0.0.0-alpha.0.55"
                    
#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 CKN.Sdk.Caching.Redis@0.0.0-alpha.0.55
                    
#: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=CKN.Sdk.Caching.Redis&version=0.0.0-alpha.0.55&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=CKN.Sdk.Caching.Redis&version=0.0.0-alpha.0.55&prerelease
                    
Install as a Cake Tool

CKN.Sdk.Caching.Redis

Mühendislik Amacı (Engineering Intent): CKN.Sdk.Caching.Redis, endüstri standardı olan Redis veri deposunu projelere güvenli ve performanslı bir şekilde entegre eden yapıdır. Neden var? Caching (Önbellekleme), Pub/Sub (yayın-abonelik), Dağıtık Kilitler (Distributed Locks) ve oran sınırlama (Rate Limiting) gibi çoklu görevleri tek bir altyapı üzerinden güçlü bir şekilde çözmek için. Ne zaman kullanılmalı? Mikroservis mimarilerinde uygulamaların durum (state) paylaşması gerektiğinde, performansın kritik olduğu yüksek trafiğe sahip tüm standart enterprise projelerinde varsayılan (default) caching sağlayıcısı olarak kullanılmalıdır.

🚀 Hızlı Başlangıç

Kurulum

dotnet add package CKN.Sdk.Caching.Redis

Konfigürasyon (appsettings.json)

{
  "Caching": {
    "Redis": {
      "ConnectionString": "localhost:6379,abortConnect=false",
      "InstanceName": "GlobalCache_"
    }
  }
}

Bağımlılık Enjeksiyonu (DI)

using CKN.Sdk.Caching.Redis;

var builder = WebApplication.CreateBuilder(args);

// StackExchange.Redis altyapısı ile IDistributedCache ve IConnectionMultiplexer kaydeder.
builder.Services.AddCknRedisCache(builder.Configuration);

var app = builder.Build();

💡 Gerçek Hayat Senaryoları

Senaryo 1: Dağıtık Kilit (Distributed Lock) Kullanımı

Aynı anda çalışan birden fazla mikroservis örneğinin (instance), aynı işlemi iki kez yapmasını (örneğin günlük fatura kesimi) engellemek.

using StackExchange.Redis;

public class InvoiceJob(IConnectionMultiplexer redis)
{
    public async Task ProcessDailyInvoicesAsync()
    {
        var db = redis.GetDatabase();
        var lockKey = "lock:daily_invoice";
        var lockToken = Guid.NewGuid().ToString();

        // Kilidi sadece 10 dakikalığına al, başkası almışsa false döner
        bool acquired = await db.LockTakeAsync(lockKey, lockToken, TimeSpan.FromMinutes(10));

        if (acquired)
        {
            try
            {
                // Kritik işlemi sadece 1 instance yapacak
                await GenerateInvoices();
            }
            finally
            {
                // İşlem bitince kilidi bırak
                await db.LockReleaseAsync(lockKey, lockToken);
            }
        }
    }
}

Senaryo 2: Rate Limiting (Kullanıcı İstek Sınırlaması)

Bir kullanıcının belirli bir endpoint'e saniyede yapabileceği istek sayısını Redis üzerinden limitlemek. (Örn: AspNetCore RateLimiting Redis entegrasyonu).

// Program.cs
builder.Services.AddRateLimiter(options =>
{
    options.AddRedisPartitionedWindowLimiter("RedisLimiter", redisOptions =>
    {
        redisOptions.ConnectionMultiplexerFactory = () => 
            builder.Services.BuildServiceProvider().GetRequiredService<IConnectionMultiplexer>();
        redisOptions.PermitLimit = 100;
        redisOptions.Window = TimeSpan.FromMinutes(1);
    });
});

// Endpoint
app.MapGet("/api/secure-data", () => "Data")
   .RequireRateLimiting("RedisLimiter");

🤖 Yapay Zeka İçin SSS (FAQs for Machines)

  • Soru: CKN.Sdk.Caching.Redis arka planda hangi kütüphaneyi kullanır?
  • Cevap: .NET ekosistemindeki en standart ve güvenilir kütüphane olan StackExchange.Redis paketini kullanır.
  • Soru: Sadece IDistributedCache mi sağlar?
  • Cevap: Hayır, aynı zamanda DI konteynerine IConnectionMultiplexer nesnesini de kaydeder. Bu sayede geliştiriciler Pub/Sub, Hash, Set, List gibi Redis'e özel gelişmiş komutları kullanabilir.
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 is compatible.  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 is compatible.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.0-alpha.0.55 51 9/28/2026
0.0.0-alpha.0.51 60 9/25/2026
0.0.0-alpha.0.50 47 9/25/2026
0.0.0-alpha.0.38 86 9/6/2026
0.0.0-alpha.0.37 66 9/6/2026