Merhaba arkadaşlar, bugün sizlere Redis komut satırı arayüzünü (CLI) kullanarak en temel veri tipleriyle nasıl çalışacağınızı ve en kritik özelliklerden biri olan anahtar süre sonu (TTL) ayarlamayı adım adım anlatacağım. Özellikle cache mekanizmaları veya oturum yönetimi için Redis kullanıyorsanız, bu temel komutları bilmek hayat kurtarıcı olacaktır.
Redis CLI'ye Bağlanma ve Temel Kontroller
Öncelikle Redis sunucumuza bağlanalım. Eğer Redis sunucusu aynı makinedeyse ve varsayılan portta çalışıyorsa aşağıdaki komut yeterli olacaktır. Ben genelde bu şekilde bağlanırım.
Bağlandıktan sonra sunucunun çalıştığından emin olmak için PING komutunu atabiliriz. Cevap "PONG" olarak dönmelidir.
Eğer sunucuya şifre ile bağlanmanız gerekiyorsa, bağlandıktan sonra AUTH komutunu kullanabilirsiniz. Şifreli bağlantı için direkt komut satırından da bağlanabilirsiniz.
String Veri Tipi ile Çalışma
String, Redis'teki en temel veri tipidir. Metin, sayı veya binary veri saklayabilir. Bir anahtarın değerini SET komutuyla atarız.
Değeri okumak için GET komutunu kullanırız.
String tipindeki bir değeri sayı olarak saklayıp arttırmak da çok yaygın bir kullanımdır. Örneğin sayaçlar için INCR komutu mükemmeldir.
Komutu çalıştırdıktan sonra değer 101 olacaktır. Eğer anahtar yoksa, INCR onu 1 değeri ile oluşturur.
List Veri Tipi ile Çalışma
Listeler, sıralı bir koleksiyondur. Bir kuyruk (queue) veya yığın (stack) gibi davranabilir. LPUSH komutu ile listenin başına eleman ekleriz.
Listenin tüm elemanlarını LRANGE ile okuyabiliriz. 0 -1 aralığı tüm listeyi getirir.
Listenin sonundan bir eleman çıkarmak (kuyruk mantığı) için RPOP kullanırız.
Anahtar Süre Sonu (TTL) Ayarlama
Redis'in en güçlü özelliklerinden biri, anahtarlara bir ömür biçebilmemizdir. Bu, özellikle oturum (session) veya önbellek (cache) verileri için vazgeçilmezdir. Bir anahtarın süresi dolduğunda Redis onu otomatik olarak siler.
Bir anahtarı oluştururken süre sonunu direkt SET komutu ile verebiliriz (EX saniye cinsinden).
Bu komut, oturum:xyz123 anahtarını 3600 saniye (1 saat) sonra silinecek şekilde oluşturur.
Eğer var olan bir anahtara süre sonu eklemek istersek, EXPIRE komutunu kullanırız.
Bu komut, gecici:veri anahtarının ömrünü 300 saniye (5 dakika) olarak ayarlar.
Bir anahtarın kalan süresini kontrol etmek için TTL komutunu kullanırız. Eğer anahtarın süresi sona ermişse -2, hiçbir süre sınırı yoksa -1 döner.
Diğer Temel Veri Tipleri ve Özet
Kısa bir özet geçmek gerekirse:
Sets (Kümeler): Benzersiz, sırasız eleman koleksiyonu. SADD, SMEMBERS komutları.
Hashes (Hash Tabloları): Bir anahtar altında field-value çiftleri saklamak için idealdir. Kullanıcı profili gibi nesneleri temsil eder. HSET, HGETALL komutları.
Sorted Sets (Sıralı Kümeler): Her elemanın bir skoru vardır ve buna göre sıralanır. Leaderboard'lar için mükemmeldir. ZADD, ZRANGE komutları.
Örneğin bir hash oluşturalım:
Tüm field'ları ve değerleri okumak için:
Sonuç ve Tavsiyeler
Redis CLI'yi ve temel komutları öğrenmek, sunucunuzdaki veri akışını debug etmenizi ve küçük operasyonları hızla yapmanızı sağlar. TTL özelliğini doğru kullanmak, bellek yönetimi ve veri tutarlılığı açısından çok önemlidir. Süresi dolmuş eski cache kayıtlarının belleği işgal etmesini engellersiniz.
Ben genelde kritik cache anahtarlarına mutlaka bir TTL süresi belirlerim, sonsuz yaşayan anahtar bırakmamaya çalışırım. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? TTL sürelerinizi belirlerken nelere dikkat ediyorsunuz? Aklınıza takılan veya eklemek istediğiniz bir şey olursa aşağıya yazmaktan çekinmeyin. Hep birlikte öğrenelim.
Öncelikle Redis sunucumuza bağlanalım. Eğer Redis sunucusu aynı makinedeyse ve varsayılan portta çalışıyorsa aşağıdaki komut yeterli olacaktır. Ben genelde bu şekilde bağlanırım.
Bash:
redis-cli
Bağlandıktan sonra sunucunun çalıştığından emin olmak için PING komutunu atabiliriz. Cevap "PONG" olarak dönmelidir.
Bash:
PING
Eğer sunucuya şifre ile bağlanmanız gerekiyorsa, bağlandıktan sonra AUTH komutunu kullanabilirsiniz. Şifreli bağlantı için direkt komut satırından da bağlanabilirsiniz.
Bash:
redis-cli -a sifreniz
String, Redis'teki en temel veri tipidir. Metin, sayı veya binary veri saklayabilir. Bir anahtarın değerini SET komutuyla atarız.
Bash:
SET kullanici:1001:isim "Ahmet Yılmaz"
Değeri okumak için GET komutunu kullanırız.
Bash:
GET kullanici:1001:isim
String tipindeki bir değeri sayı olarak saklayıp arttırmak da çok yaygın bir kullanımdır. Örneğin sayaçlar için INCR komutu mükemmeldir.
Bash:
SET site:ziyaretci:sayaci 100
INCR site:ziyaretci:sayaci
Komutu çalıştırdıktan sonra değer 101 olacaktır. Eğer anahtar yoksa, INCR onu 1 değeri ile oluşturur.
Listeler, sıralı bir koleksiyondur. Bir kuyruk (queue) veya yığın (stack) gibi davranabilir. LPUSH komutu ile listenin başına eleman ekleriz.
Bash:
LPUSH gorevler "backup_al" "log_temizle" "rapor_olustur"
Listenin tüm elemanlarını LRANGE ile okuyabiliriz. 0 -1 aralığı tüm listeyi getirir.
Bash:
LRANGE gorevler 0 -1
Listenin sonundan bir eleman çıkarmak (kuyruk mantığı) için RPOP kullanırız.
Bash:
RPOP gorevler
Redis'in en güçlü özelliklerinden biri, anahtarlara bir ömür biçebilmemizdir. Bu, özellikle oturum (session) veya önbellek (cache) verileri için vazgeçilmezdir. Bir anahtarın süresi dolduğunda Redis onu otomatik olarak siler.
Bir anahtarı oluştururken süre sonunu direkt SET komutu ile verebiliriz (EX saniye cinsinden).
Bash:
SET oturum:xyz123 "kullanici_data" EX 3600
Bu komut, oturum:xyz123 anahtarını 3600 saniye (1 saat) sonra silinecek şekilde oluşturur.
Eğer var olan bir anahtara süre sonu eklemek istersek, EXPIRE komutunu kullanırız.
Bash:
EXPIRE gecici:veri 300
Bu komut, gecici:veri anahtarının ömrünü 300 saniye (5 dakika) olarak ayarlar.
Bir anahtarın kalan süresini kontrol etmek için TTL komutunu kullanırız. Eğer anahtarın süresi sona ermişse -2, hiçbir süre sınırı yoksa -1 döner.
Bash:
TTL oturum:xyz123
Kısa bir özet geçmek gerekirse:
Sets (Kümeler): Benzersiz, sırasız eleman koleksiyonu. SADD, SMEMBERS komutları.
Hashes (Hash Tabloları): Bir anahtar altında field-value çiftleri saklamak için idealdir. Kullanıcı profili gibi nesneleri temsil eder. HSET, HGETALL komutları.
Sorted Sets (Sıralı Kümeler): Her elemanın bir skoru vardır ve buna göre sıralanır. Leaderboard'lar için mükemmeldir. ZADD, ZRANGE komutları.
Örneğin bir hash oluşturalım:
Bash:
HSET urun:5001 isim "Laptop" fiyat 15000 stok 25
Tüm field'ları ve değerleri okumak için:
Bash:
HGETALL urun:5001
Redis CLI'yi ve temel komutları öğrenmek, sunucunuzdaki veri akışını debug etmenizi ve küçük operasyonları hızla yapmanızı sağlar. TTL özelliğini doğru kullanmak, bellek yönetimi ve veri tutarlılığı açısından çok önemlidir. Süresi dolmuş eski cache kayıtlarının belleği işgal etmesini engellersiniz.
Ben genelde kritik cache anahtarlarına mutlaka bir TTL süresi belirlerim, sonsuz yaşayan anahtar bırakmamaya çalışırım. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? TTL sürelerinizi belirlerken nelere dikkat ediyorsunuz? Aklınıza takılan veya eklemek istediğiniz bir şey olursa aşağıya yazmaktan çekinmeyin. Hep birlikte öğrenelim.