Key Value İşte Redis

UMUT ÇELİK
HAVELSAN
Published in
5 min readNov 30, 2023

Büyük ve Küçük Ölçekli Projeler İçin Redis Kavramı

Bir şeyi kullanırken yeniliğine ya da popüleritesine bakmadan gerçekten benim projemde bu gerekli mi diye sormalı developer. Sonra yavaştan kodlamaya başlamalı bir halıyı ilmek ilmek dokur gibi…

bak bu yerler eskiden hep key value idi…

Kısaca hızlı erişim deyip başlayalım :)

Programlama dillerinde cache yönetimi, performans artırma açısından kritik bir konudur. Redis, esnek yapısı ve hızlı erişim sağlama yetenekleriyle orta düzeydeki geliştiricilere etkili bir çözüm sunar. Ancak, kullanılacak teknolojinin proje gereksinimlerine uygunluğu her zaman değerlendirilmelidir.

Cache Çeşitleri
In-Memory Cache:
Verileri RAM içinde tutar, bu da hızlı erişim sağlar.

Distributed Cache:
Cache verilerini birden fazla sunucuda paylaşarak ölçeklenebilirlik sağlar.

Write-Through Cache:
Veri güncellendikçe, hem cache hem de veritabanı güncellenir.

Write-Behind Cache:
Veritabanı hemen güncellenmez, güncelleme cache üzerinde yapılır ve ardından veritabanına yazılır.

Redis Nedir?

Redis, açık kaynaklı ve hızlı bir anahtar-değer deposu sistemidir. Verileri RAM içinde tutarak yüksek performanslı bir şekilde erişim sağlar. Hafızayı etkili bir biçimde kullanması ve çok çeşitli veri yapılarına destek vermesi nedeniyle özellikle cache yönetiminde tercih edilir.

Redis’in Temel Özellikleri:

  • Hızlı Erişim: Verileri RAM’de tutarak anlık erişim sağlar.
  • Esnek Veri Yapıları: String, set, list, hash gibi birçok veri yapısını destekler.
  • Dağıtılmış Sistemlere Uyum: Yüksek ölçeklenebilirlik için idealdir.

Cache Metodolojileri:

Cache-Aside (Lazy Loading):

Veri talep edildiğinde, uygulama önbellekte (cache) var mı kontrol eder.

Eğer varsa, veriyi kullanır. Yoksa, veriyi veritabanından alır ve önbelleğe ekler.

Write-Through Cache:

Veri yazıldığında, aynı zamanda önbelleğe de yazılır.

Eğer veri veritabanına yazılamazsa, önbellekten de silinir.

Write-Behind (Write-Back) Cache:

Veri yazıldığında sadece önbelleğe yazılır.

Arka planda belirli bir süre sonra veritabanına asenkron olarak yazılır.

Refresh-Ahead (Read-Through) Cache:

Veri talep edildiğinde, önbellek sürekli güncellenir ve veritabanından en güncel veri alınır.

Sürekli güncellendiği için daha maliyetli olabilir.

Redis Kullanmamanın Uygun Olduğu Durumlar
Düşük Bellek Kapasitesi:
Eğer uygulamanızın çalıştığı ortamda düşük bellek kapasitesine sahip bir sistem kullanılıyorsa, Redis kullanmak yerine daha hafif bir çözüm düşünülmelidir.
Durumsuz Veri Talepleri:
Eğer uygulamanızda sık sık değişen verilere değil de, daha statik veya durumsuz verilere ihtiyaç duyuyorsanız, Redis’in getirdiği hız avantajı pek etkili olmayabilir.
Yedekleme ve Geri Yükleme Zorlukları:
Redis, verileri RAM üzerinde tuttuğu için, verilerin kalıcı olması ve yedeklenmesi konusunda ekstra önlemler gerektirir. Eğer yedekleme ve geri yükleme süreçleri sizin için zorluk oluşturuyorsa, alternatif çözümler değerlendirilmelidir.
Sadece Tek Bir Sunucu Üzerinde Çalışma:
Eğer uygulamanız tek bir sunucu üzerinde çalışıyorsa ve dağıtık bir sistem yapısına ihtiyaç duymuyorsa, Redis’in dağıtık özellikleri gereksiz olabilir.
Yüksek Disk Erişimine İhtiyaç Duyma:
Redis, RAM odaklı bir veritabanıdır ve yüksek disk erişimine ihtiyaç duyan uygulamalarda tercih edilmemelidir..

Peki nedir bu key value kardeşim der gibi sesleri duyar gibiyim.

  1. Key (Anahtar):
  • Redis’te verilere erişmek için kullanılan benzersiz bir tanımlayıcıdır.
  • Bir anahtar, bir veri parçasına işaret eder ve bu veriyi almak veya güncellemek için kullanılır.
  • Anahtarlar genellikle metin veya sayısal ifadeler olabilir ve bir örnekte kullanıcı kimliği, ürün adı gibi değerleri temsil edebilir.
  • Anahtarlar, bir veri parçasını benzersiz bir şekilde tanımlayarak hızlı erişim sağlar.
  1. Value (Değer):
  • Redis’te anahtarla eşleştirilen, depolanan veriyi ifade eder.
  • Değer, anahtarın gösterdiği verinin taşıyıcısıdır ve bu, metin, sayı, liste, küme veya diğer veri tipleri olabilir.
  • Örneğin, bir kullanıcının adı, bir ürünün fiyatı veya bir sıralı liste değeri bir değeri temsil edebilir.
  • Değerler, anahtarlarla birleştirilerek bir çift oluşturur ve bu çiftler Redis veritabanında depolanır.

Örnek bir Redis anahtar-değer çifti:

  • Anahtar: “user:12345”
  • Değer: “{“name”:”John Doe”,”age”:30,”city”:”ExampleCity”}”

Bu örnekte, “user:12345” anahtarıyla ilişkilendirilmiş bir JSON formatındaki değer bulunmaktadır. Bu çift, belirli bir kullanıcıyı temsil eder ve bu kullanıcının adı, yaşı ve şehri gibi bilgileri içerir.

Dezavatajları olmaz mı ?

Redis Kullanmanın Zararları

Yüksek Bellek Kullanımı:

  • Redis, verileri RAM üzerinde tuttuğu için yüksek bellek kullanımına neden olabilir. Bu durum, maliyeti artırabilir, özellikle büyük veri setleri için.

Kalıcılık Sorunları:

  • Redis, varsayılan olarak verileri RAM üzerinde tutar. Verilerin kalıcı olması ve yedekleme süreçleri ek konfigürasyon gerektirebilir.

Karmaşıklık:

  • Redis’in kullanımı bazı durumlarda karmaşıklık yaratabilir. Özellikle küçük ölçekli projelerde, daha basit çözümler tercih edilebilir.

Sonuç

Redis, birçok uygulama senaryosunda avantaj sağlayan güçlü bir veri deposu sistemidir. Ancak, projenizin özel gereksinimlerini ve sınırlamalarını dikkate alarak kullanım kararı verilmelidir. Bu makalede ele aldığımız faydalar ve zararlar, Redis’in potansiyel katkıları ve karşılaşılabilecek zorlukları anlamanıza yardımcı olacaktır.

Redis’i kimler kullanıyor?

X, GitHub, Weibo, Pinterest, Snapchat, Craigslist, Digg, StackOverflow, Flickr

joker bilgi

Joker Bilgiler Her Zamanki gibi :)

Temel Redis Komutları:

Anahtar-Değer İşlemleri:

  • SET key value: Bir anahtarla değeri tanımlar.
  • GET key: Belirli bir anahtarın değerini getirir.
  • DEL key: Belirli bir anahtarı ve ilişkili değeri siler.

Liste İşlemleri:

  • LPUSH key value1 value2 ...: Belirli bir listeye bir veya daha fazla değer ekler.
  • RPUSH key value1 value2 ...: Belirli bir listeye sağdan bir veya daha fazla değer ekler.
  • LRANGE key start stop: Belirli bir aralıktaki listeyi getirir.

Küme (Set) İşlemleri:

  • SADD key member1 member2 ...: Belirli bir kümeye bir veya daha fazla üye ekler.
  • SMEMBERS key: Belirli bir kümenin tüm üyelerini getirir.
  • SINTER key1 key2 ...: Birden fazla kümenin kesişimini getirir.

Hash İşlemleri:

  • HSET key field value: Belirli bir hash içinde bir alanı ve değeri tanımlar.
  • HGET key field: Belirli bir hash içinde belirli bir alanın değerini getirir.
  • HGETALL key: Belirli bir hash'in tüm alan ve değerlerini getirir.

Zincir (Sorted Set) İşlemleri:

  • ZADD key score1 member1 score2 member2 ...: Belirli bir sıralı kümeye bir veya daha fazla üye ekler.
  • ZRANGE key start stop: Belirli bir sıralı kümenin belirli bir aralığındaki üyeleri getirir.
  • ZSCORE key member: Belirli bir sıralı kümede belirli bir üyenin skorunu getirir.

FLUSHALL Komutu:

  • FLUSHALL: Tüm verileri içeren tüm Redis veritabanını siler. Bu komut, tüm anahtarlar ve ilişkili değerlerini temizler. Dikkatli kullanılmalıdır çünkü tüm veriyi kalıcı olarak siler.

--

--