CKN.Sdk.Caching.Redis
0.0.0-alpha.0.55
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
<PackageReference Include="CKN.Sdk.Caching.Redis" Version="0.0.0-alpha.0.55" />
<PackageVersion Include="CKN.Sdk.Caching.Redis" Version="0.0.0-alpha.0.55" />
<PackageReference Include="CKN.Sdk.Caching.Redis" />
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"
#:package CKN.Sdk.Caching.Redis@0.0.0-alpha.0.55
#addin nuget:?package=CKN.Sdk.Caching.Redis&version=0.0.0-alpha.0.55&prerelease
#tool nuget:?package=CKN.Sdk.Caching.Redis&version=0.0.0-alpha.0.55&prerelease
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.Redisarka planda hangi kütüphaneyi kullanır? - Cevap: .NET ekosistemindeki en standart ve güvenilir kütüphane olan
StackExchange.Redispaketini kullanır. - Soru: Sadece
IDistributedCachemi sağlar? - Cevap: Hayır, aynı zamanda DI konteynerine
IConnectionMultiplexernesnesini de kaydeder. Bu sayede geliştiriciler Pub/Sub, Hash, Set, List gibi Redis'e özel gelişmiş komutları kullanabilir.
| 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 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. |
-
net10.0
- CKN.Sdk.Core (>= 0.0.0-alpha.0.55)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 10.0.11)
-
net8.0
- CKN.Sdk.Core (>= 0.0.0-alpha.0.55)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 8.0.0)
-
net9.0
- CKN.Sdk.Core (>= 0.0.0-alpha.0.55)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 9.0.0)
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 |