asyncfunctionrenderPage(){const data =awaitgetPageDatas();return data;}
Bileşenler hazırlanıyor...
Not içeriği yükleniyor...
// Markdown dosyası okunuyor
// İçerik işleniyor
// Syntax highlighting hazırlanıyor
Redis String Veri Türü | Temel String Commands ve Operations | Kubilay Bozak
Redis String Veri Türü
2025-07-11
10 min
Redis String data type operations, encoding strategies ve performance considerations. SET, GET, INCR komutları ve atomic operations.
Redis
String
Data Types
Commands
Atomic
Redis’teki String, en basit ve en temel veri türüdür. Bir key’e karşılık gelen bir metin, sayı, JSON string ya da ikili veri saklamak için kullanılır. Redis’in diğer güçlü veri türlerinin pek çoğu, temel olarak String üzerine inşa edilmiştir. Hafifliği ve esnekliği sayesinde, hızlı veri erişimi gerektiren birçok senaryoda öncelikli olarak tercih edilir.
🔧 Temel Özellikler
Tek bir key → tek bir value ilişkisi.
Maksimum değer boyutu: 512 MB
Value tipi: metin, sayı, JSON string, base64 vs. olabilir.
🎯 Kullanım Senaryoları
Kullanım
Açıklama
Kullanıcı token’ları
auth:user:123 → jwtTokenData
Sayfa önbelleği (caching)
page:home → HTML string
Sayaçlar
login:count:today → 1424
Geçici veriler
OTP kodu, e-posta onayı, şifre sıfırlama kodu vs.
🔧 Temel Komutlar ve Açıklamaları
Komut
Açıklama
Örnek
SET
Key’e bir değer atar.
SET name "Kubilay"
GET
Key'deki değeri getirir.
GET name → Kubilay
INCR, DECR
Sayısal string’i artırır/azaltır.
INCR counter → 101
INCRBY, DECRBY
Belirli miktarda artır/azalt.
INCRBY counter 5
APPEND
Var olan string’in sonuna ekleme yapar.
APPEND name " Bozak" → Kubilay Bozak
STRLEN
Değerin karakter uzunluğunu verir.
STRLEN name → 12
SETRANGE
Mevcut değerin belirli bir kısmını değiştirir.
SETRANGE name 0 "M" → Mubilay Bozak
GETRANGE
Belirli aralıkta karakterleri getirir.
GETRANGE name 0 6 → Mubilay
EX, PX
Expire süresi tanımlamak için kullanılır.
SET otp "123456" EX 60 (60 saniye)
🧪 SET ve GET Komutlarını İnceleyelim
Redis’te veri eklemek ve okumak için en temel komutlar SET ve GET komutlarıdır. Şimdi bu komutları adım adım inceleyelim:
text
127.0.0.1:6379> SET Name Kubilay // "Name" adında bir key tanımlıyoruz ve değerini "Kubilay" olarak atıyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> SET NAME Kubilay2 // "NAME" adında farklı bir key tanımlıyoruz ve bu key'e "Kubilay2" değerini veriyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> GET Name // "Name" key'inin değerini getiriyoruz.
"Kubilay" // Key'in değeri döndürülüyor.
127.0.0.1:6379> GET NAME // "NAME" key'inin değerini getiriyoruz.
"Kubilay2" // Farklı key olduğu için farklı değer döndürülüyor.
📌 Dikkat Edilmesi Gereken Nokta
Yukarıdaki örnekte iki farklı key tanımlanmış gibi görünse de, aslında bu durum birçok geliştiricinin gözünden kaçabilen bir detay barındırıyor:
➡️ Redis’te key isimleri büyük-küçük harfe duyarlıdır (case-sensitive).
Yani Name ve NAME aslında Redis için iki tamamen farklı key’dir. Bu yüzden SET NAME Kubilay2 komutuyla, daha önce tanımladığınız Name key’inin üzerine yazılmamış olur — onun yerine yepyeni bir key (NAME) oluşturulmuş olur.
Redis'te key isimlerini tanımlarken büyük/küçük harf farkına dikkat etmek oldukça önemlidir. Projelerde karmaşıklığı ve karışıklığı önlemek için genellikle key isimlerinde küçük harf ve belirli bir format (örneğin: user:name, cache:page:home) kullanılması önerilir.
🧪 APPEND Komutunu İnceleyelim
Redis’te var olan bir string değerine ekleme yapmak için kullanılır. Eğer key yoksa, yeni key oluşturup değeri atar.
text
127.0.0.1:6379> SET mesaj "Merhaba" // "mesaj" adında bir key ve "Merhaba" değeri atandı.
OK
127.0.0.1:6379> APPEND mesaj " Dünya!" // "mesaj" key'inin sonuna " Dünya!" eklendi.
(integer) 14 // Yeni string uzunluğu döner.
127.0.0.1:6379> GET mesaj // "mesaj" key'inin yeni değeri alındı.
"Merhaba Dünya!"
📌 Dikkat Edilmesi Gereken Nokta
APPEND komutu sadece string değerler üzerinde çalışır.
Eğer key yoksa, önce key oluşturulur ve verilen değer atanır.
Redis’te sayısal değer içeren bir string key’in değerini 1 artırmak için kullanılır.
text
127.0.0.1:6379> set Counter 0 // "Counter" adında bir key oluşturup başlangıç değeri 0 atıyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> get Counter // "Counter" key'inin değerini kontrol ediyoruz.
"0" // Başlangıç değeri olan 0 döndürülüyor.
127.0.0.1:6379> incr Counter // Counter değerini 1 artırıyoruz.
(integer) 1 // Artırılmış değer olan 1 döndürülüyor.
127.0.0.1:6379> incr Counter // Counter değerini tekrar 1 artırıyoruz.
(integer) 2 // Artırılmış değer olan 2 döndürülüyor.
127.0.0.1:6379> incr Counter // Counter değerini tekrar 1 artırıyoruz.
(integer) 3 // Artırılmış değer olan 3 döndürülüyor.
127.0.0.1:6379> decr Counter // Counter değerini 1 azaltıyoruz.
(integer) 2 // Azaltılmış değer olan 2 döndürülüyor.
127.0.0.1:6379> decr Counter // Counter değerini tekrar 1 azaltıyoruz.
(integer) 1 // Azaltılmış değer olan 1 döndürülüyor.
127.0.0.1:6379> decr Counter // Counter değerini tekrar 1 azaltıyoruz.
(integer) 0 // Azaltılmış değer olan 0 döndürülüyor.
127.0.0.1:6379> incrby Counter 5 // Counter değerini 5 artırıyoruz.
(integer) 5 // Artırılmış değer olan 5 döndürülüyor.
127.0.0.1:6379> incrby Counter 5 // Counter değerini tekrar 5 artırıyoruz.
(integer) 10 // Artırılmış değer olan 10 döndürülüyor.
127.0.0.1:6379> decrby Counter 5 // Counter değerini 5 azaltıyoruz.
(integer) 5 // Azaltılmış değer olan 5 döndürülüyor.
127.0.0.1:6379> decrby Counter 5 // Counter değerini tekrar 5 azaltıyoruz.
(integer) 0 // Azaltılmış değer olan 0 döndürülüyor.
127.0.0.1:6379>
📌 Dikkat Edilmesi Gereken Nokta
INCR String olarak saklanan bir sayısal değeri 1 artırmak için kullanılır.
DECR String olarak saklanan bir sayısal değeri 1 azaltmak için kullanılır.
INCRBY String olarak saklanan bir sayısal değeri belirtilen sayıda artış yapmak için kullanılır..
DECRBY String olarak saklanan bir sayısal değeri belirtilen sayıda azalış yapmak için kullanılır.
Bu komutlar sadece integer (tam sayı) değerlerle çalışır.
Eğer key yoksa otomatik olarak 0 kabul edilir ve işlem yapılır:
Eğer key’in değeri sayı değilse, örneğin bir string ise, hata döner:
🧪 SETRANGE Komutunu İnceleyelim
Var olan string değer üzerinde belirli bir indeksten başlayarak, üzerine yazma işlemi yapar.
text
127.0.0.1:6379> set Name "Kubilay" // "Name" key'ine "Kubilay" değerini atıyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> get Name // "Name" key'inin değerini kontrol ediyoruz.
"Kubilay" // Atanan değer olan "Kubilay" döndürülüyor.
127.0.0.1:6379> SETRANGE Name 5 " Redis" // 5. indeksten başlayarak " Redis" ile değiştiriyoruz.
(integer) 11 // Yeni string uzunluğu döndürülüyor.
127.0.0.1:6379> get Name // Değiştirilmiş değeri kontrol ediyoruz.
"Kubil Redis" // 5. indeksten sonrası değiştirildi.
127.0.0.1:6379>
📌 Dikkat Edilmesi Gereken Nokta
Eğer belirlenen indeks string uzunluğundan uzunsa, aradaki boşluklar \x00 (null byte) ile doldurulur.
Var olan değer üzerine yazılır, string tamamen değiştirilmez.
SETRANGE ile kısmi string değişiklikleri yapılabilir.
🧪 GETRANGE Komutu
Bir string key’in belirli karakter aralığını döndürür. Karakter indeksleri üzerinden çalışır.
text
127.0.0.1:6379> SET mesaj "Redis Çok Hızlıdır" // "mesaj" key'ine örnek bir string atıyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> GETRANGE mesaj 0 4 // 0. indeksten 4. indekse kadar karakterleri alıyoruz.
"Redis" // İlk 5 karakter döndürülüyor.
127.0.0.1:6379> GETRANGE mesaj 6 8 // 6. indeksten 8. indekse kadar karakterleri alıyoruz.
"Çok" // Belirtilen aralıktaki karakterler döndürülüyor.
127.0.0.1:6379> GETRANGE mesaj 12 100 // 12. indeksten 100. indekse kadar (string sonuna kadar).
"Hızlıdır" // String'in kalan kısmı döndürülüyor.
📌 Dikkat Edilmesi Gereken Noktalar:
GETRANGE, string'in sadece bir parçasını okumak için performanslı bir yoldur.
Çok uzun string’lerden sadece küçük bir kısmını almak istediğinizde kullanışlıdır.
Bitiş değeri gerçek uzunluktan büyükse, string'in sonuna kadar döndürür.
Negatif indeks de kullanılabilir (-1: son karakter).
🧪 STRLEN Komutu
Belirli bir string key’in karakter (byte) uzunluğunu verir.
text
127.0.0.1:6379> SET mesaj "Redis" // "mesaj" key'ine "Redis" değerini atıyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> STRLEN mesaj // "mesaj" key'inin karakter uzunluğunu kontrol ediyoruz.
(integer) 5 // "Redis" kelimesinin 5 karakter olduğu döndürülüyor.
127.0.0.1:6379> SET veri "Merhaba Dünya!" // "veri" key'ine "Merhaba Dünya!" değerini atıyoruz.
OK // İşlem başarılı olduğunu gösterir.
127.0.0.1:6379> STRLEN veri // "veri" key'inin karakter uzunluğunu kontrol ediyoruz.
(integer) 14 // "Merhaba Dünya!" cümlesinin 14 karakter olduğu döndürülüyor.
📌 Dikkat Edilmesi Gereken Noktalar:
Eğer key yoksa, sonuç 0 döner.
Uzunluğu byte cinsindendir (unicode karakterler 1'den fazla byte olabilir).
Bu kapsamlı rehberde Redis'in en temel veri türü olan String türünü derinlemesine inceledik. SET ve GET'ten başlayarak APPEND, INCR/DECR serisi, SETRANGE, GETRANGE ve STRLEN komutlarına kadar Redis String türünün tüm önemli özelliklerini pratik örneklerle ele aldık. String türünün basitliği ve esnekliği sayesinde cache'leme, sayaçlar, token yönetimi ve geçici veri saklama gibi birçok senaryoda nasıl etkili şekilde kullanılabileceğini gördük.
Redis komutlarının case-sensitive olduğu detayından, SETRANGE ile kısmi string değişikliklerine, negatif indekslerle GETRANGE kullanımına kadar pek çok pratik ipucu ve dikkat edilmesi gereken noktayı da örneklerle açıkladık. Bu bilgiler, gerçek projelerde Redis String türünü daha bilinçli ve verimli kullanmanıza yardımcı olacaktır.
Artık Redis'in String türünde sağlam bir temel oluşturduktan sonra, bir sonraki adımda daha karmaşık veri yapılarına geçmeye hazırız. Bir sonraki içeriğimizde Redis'in List veri türünü detaylıca ele alacağız. List türü ile sıralı veriler, kuyruk (queue) yapıları, yığın (stack) implementasyonları ve liste manipülasyonlarının nasıl gerçekleştirileceğini öğreneceğiz.