Redis’te Performans ve Ölçeklenebilirlik için Key Stratejileri

Anil Yilmaz
2 min readJan 26, 2025
Redis Keys

Selamlar, Redis yüksek performanslı uygulamaların önemli bir bileşenidir. Ancak key yönetimi stratejileri olmadan, bu güçlü aracın tüm potansiyelinden yararlanılamaz. Yanlış bir key yönetimi; sorgu performansını düşürebilir, bellek tüketimini artırabilir ve ölçeklendirme sorunlarına neden olabilir. İşte Redis performansınızı artıracak en iyi key stratejileri ve C# örnekleri:

1- Key İsimlendirmelerini Düzenli Hale Getirin

Redis key’leriniz, tıpkı bir kütüphanedeki kitapların rafları gibi düzenli ve anlaşılır olmalı. Örnek isimlendirmeler:

  • user:123:profile123 numaralı kullanıcının profil bilgileri
  • order:456:items456 numaralı siparişin ürün listesi
IDatabase db = redis.GetDatabase();
string userId = "123";
db.StringSet($"user:{userId}:profile", "User Profile Data");

string profile = db.StringGet($"user:{userId}:profile");

Bu şekilde, key’lerin neyi temsil ettiği tek bakışta anlaşılır.

2- Namespace Kullanarak Key’lerinizi Gruplayın

Key’lerinizi mantıksal kategorilere ayırmak için : karakterini kullanın (örneğin, product:, session:). Bu, özellikle SCAN komutuyla belirli grupları tararken işinizi kolaylaştırır:

var keys = server.Keys(pattern: "user:*:profile");

foreach (var key in keys)
{
Console.WriteLine($"Finded Key: {key}");
}

3- TTL (Time-to-Live) ile Geçici Verilerin Ömrünü Ayarlayın

Geçici veriler (cache, oturumlar) için TTL belirleyin:

string sessionId = "abc123";
db.StringSet($"session:{sessionId}", "Oturum Verisi", TimeSpan.FromHours(1));

TTL, bellek kullanımını optimize eder. Ancak, kalıcı verilere TTL eklemeyin veya çok kısa TTL’lerle gereksiz yük oluşturmayın. EXPIRE komutuyla dinamik olarak ömrü uzatabilirsiniz.

4- Büyük Verileri Parçalara Bölün

Redis’te tek bir key’de çok büyük veri saklamaktan kaçının. Örneğin, 10MB’lık bir JSON saklamak yerine veriyi parçalara ayırarak hash tipleri kullanabilirsiniz.

  • Hash tipleri kullanın: HSET product:123 name "Phone" price 999,

Aşırı büyük key’ler, tek bir işlemde bellek ve ağ tıkanıklığına yol açar. HSCAN, SSCAN gibi komutlarla veriye parçalı erişin.

string productId = "123";
db.HashSet($"product:{productId}", new HashEntry[]
{
new HashEntry("name", "Phone"),
new HashEntry("price", "999"),
new HashEntry("stock", "50")
});

var productData = db.HashGetAll($"product:{productId}");
foreach (var entry in productData)
{
Console.WriteLine($"{entry.Name}: {entry.Value}");
}

5- Cluster Yönetimi için Hash Tag Kullanın

Redis Cluster kullanıyorsanız, key’lerin aynı hash slot’ta bulunması gereken durumlarda hash tag kullanabilirsiniz.

string userId = "123";
db.StringSet($"{{user:{userId}}}.profile", "User Profile");
db.StringSet($"{{user:{userId}}}.settings", "User Settings");

Bu, user123 ile ilgili tüm key’lerin aynı hash slot’ta bulunmasını sağlar. Böylece key’lerin aynı hash slot’ta kalmasını sağlar ve özellikle çoklu key işlemlerinde önemli bir avantaj sunar.

Sonuç:

Redis’te doğru key stratejileri, performansı 2–3 kat artırabilir ve ölçeklenebilirliği sağlayabilir. Key’lerinizi bir “unique identifier” değil, veri modelinizin bir parçası olarak düşünün. TTL, hash tag ve parçalı veri yapıları gibi yöntemlerle Redis’i tam potansiyeliyle kullanabilirsiniz. Bir sonraki yazımda görüşmek üzeree

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Anil Yilmaz
Anil Yilmaz

No responses yet

Write a response