İçerikler :

Analitik Konularında Redis Bitmaps Kullanım Ö.. AOF Persistence Basit Bir BitMaps Kullanım Örneği BitMaps Cache İçin Redis Kullanımı Expire Flushall HyperLogLogs RDB Snapshotting - Redis Database Backup Snap.. Redis Redis'te Expire Sistemi redis-cli Redis Persistence - Veri Kalıcılığı Redis Veri Tipleri Stream

Bu Sayfayı Paylaş:

Kavram

Redis

Tanım: Cache veya hafızada key-value şeklinde veri saklamak amacıyla kullanılan, açık kaynak kodlu bir sunucu. Redis ifadesi REmote DIctionary Server kelimelerinin kısaltmasından oluşturulmuştur. İleri seviyede veritabanı olarak (persisted özelliği nedeniyle redis açılıp kapandığında verileri saklayabiliyor) ve RabbitMQ, Kafka gibi mesajlaşma için kullanılabiliyor.

Kavram

Flushall

Tanım: Redis'te tüm veriyi temizlemek için kullanılan komut

Kavram

redis-cli

Tanım: Komut satırı üzerinden Redis sunucusuna komut göndermenizi ve cevap almanızı sağlamak için kullanılan bir komut satırı aracı

Kavram

Redis Persistence - Veri Kalıcılığı

Tanım: Redis'in verileri kalıcı olarak saklama özelliği. Bu şekilde Redis açılıp kapandığı zaman veriler kaybolmamaktadır. Belirli aralıklarla tüm tuttuğu verileri saklayabilir (point-in-time snapshots). Buna RDB (Redis Database Backup) snapshot veya RDB persistence adı verilir. Her yazma işlemi saklanabilir ve istenirse orginal veriler üzerinde tekrar uygulanabilir. Bu özelliğe ise AOF (Append Only File) persistence adı verilir. Bu iki özellikten dolayı restart edildiğinde son durum korunmuş olunur.

Kavram

RDB Snapshotting - Redis Database Backup Snapshotting

Tanım: Redis'te belirli aralıklarla tüm verilerin son halinin saklanması. Redis restart edildiğinde bu son halden verileri alabilir ve AOF ile kaydedilmiş son komutlar tekrar uygulanarak son duruma dönülmüş olunur.

Kavram

AOF Persistence

Tanım: Redis'te her yazma komutunun bir dosyaya loglanması. Redis bir nedenle kesinti yaşadığında komutlar tekrar orijinal verilere uygulanarak son duruma gelinmiş olunur.

Veri

Redis Veri Tipleri

Redis'te String dışında farklı veri tipleri de saklanır. Veri tipleri aşağıdaki gibidir :
  • String : Karakter seti
  • List : Eklenme sırasına göre birden fazla String tutar.
  • Set : Sırasız bir şekilde birden fazla String tutar.
  • Map (Hashing) : Map şeklinde (key-value) String saklar
  • Sorted Set : Sırasız bir şekilde birden fazla String tutar. Her elementten score adı verilen bir sayı üretilir ve değeri aynı olan iki kayıt eklenemez

Veri tipi olmasa verileri kolay bir şekilde ekleyip almak için kullanılan veri yöntemleri de vardır.
Örneğin Bitmaps sizin için 2^32 kadar 0 değerinde bit map'i sağlar. Bu map'teki konumlara 0 ve 1 atamanızı sağlar.
HyperLogLogs ise bir veya birden fazla listenin toplamında uniq olarak elemanların sayısını fazla hafıza kullanmadan belirli bir hata payı ile bulmak için kullanılır.

Kavram

BitMaps

Tanım: Bir bit map'in belirli konumdaki (2^32 kadar olabilir) bit'in değerini 1 veya 0 olarak atayarak veri girmenizi ve almanızı sağlayan yöntem. SETBIT ile bir konumdaki bit değeri atanır, GETBIT ile bir konumdaki bit değeri alınır. Bu tür değerler istatistik, analit projelerinde kullanılabilmektedir.

Kaynak

Analitik Konularında Redis Bitmaps Kullanım Örneği

Bitmap'ler adı verilen bir özellikle basit, etkili analizler nasıl oluşturulur anlatılmaktadır.

Örnek

Basit Bir BitMaps Kullanım Örneği

Örneğin bir web sitenizdeki üyelerin haber bültenine üye olup olmadığını saklamak istiyorsunuz. Bunun için bir liste yapıp haber bültenine üye olmuş üyelerin ID'leri saklanabilir. Bu durumda 1 milyon aboneniz var ise hepsinin ID'si int tipinde bir ID ise saklanmak zorunda olunan veri tipi aşırı büyür. Bunun yerine üye id'lerin karşılığı olan konumdaki bit değeri 1'e atamak yeterlidir. Daha sonra bu konumdaki değerin 1 veya 0 olmasına göre haber bültenine abone olup olmadığı öğrenilebilinir :
SETBIT bulten 456456 1 
SETBIT bulten 123456 1
Yukarıda 456456 ve 123456 IDli üyeleri bültene abone yaptık. Sonra 456456 üyenin bültene üye olup olmadığı aşağıdaki yöntemler alınabilir :
GETBIT bulten 456456 
Eğer sonuç 0 ise bültene abone değil, üye ise bültene abonedir.

Kavram

HyperLogLogs

Tanım: Çok sayıda veri içeren kümeler için uniq değerleri sayma işini daha düşük hafızayı kullanarak yapmayı sağlayan bir model. Bu algoritma belirli bir hata payı içerir. Büyük verileriniz var ise zaman zaman onları birleştirmeniz ve birleşen veride uniq (benzersiz) olarak kaç eleman olduğunu öğrenmeniz gerekiyorsa kullanılabilir. Örneğin web sitenizi ziyaret eden uniq kullanıcı (IP’ye göre) sayısını bulmak için kullanılabilir.

Kavram

Stream

Tanım: Sürekli oluşan logların sırayla eklendiği ve bu veriden bazı sonuçların çıkarılabildiği veri türü. Log dosyalarında çıkarmanız zor olduğu sonuçlar Redis ile kolay bir şekilde çıkarılabilir. Kafka tarzı bir stream gibi çalışır. Bu stream’a abone olan consumer’lar veriyi alırlar.

Veri

Cache İçin Redis Kullanımı

Redis’in en önemli kullanım nedeni cache desteğidir. En çok cache’e saklanan veriler database sorgu sonuçları, session verileri ve Rest veya SOAP API sonuçları (aynı api aynı parametrelerle çağrılırsa response cache’den verilmesi)
En basit kullanım modeli (Cache-Aside veya Lazy Loading) :
if cache.get('all') ! null
    objects = cache.get('all')
else
    objects = getFormDB()
    cache.set('all', objects)

Eğer cache’de var ise cahce’tekini dönmek, eğer yok ise veritabanından çekip cache'e eklemek ve göndermek. Eğer “all” ile bahsedilen verilerde değişiklik yapıldığı zaman da cache’dan cache.remove(“all”); ile cache’den kaldırılabilir.
Diğer yaklaşım ise Write-Through adı verilen yöntem. Burada veri DB ye yazılır yazılmaz ilgili cache’ler güncellenir. Yani cache’i verileri ekleyen/güncelleyen bölüm tekrar doldurdur. Veriler her zaman cache’ten verilir.

Veri

Redis'te Expire Sistemi

Herhangi bir şey söylenmediğinde eklenenler hiçbir zaman expire olmaz. Expire süresi vermenin bir yöntemi de cache’e eklenen nesneye bir expire zamanı vermektir. Cache’ten veri alındığında bu expire zamanı kontrol edilir ve aşıldıysa veri cache’ten temizlenir ve güncellenir. Başka bir yöntemde bir key ile bir expire süresini atamak. Bu durumda belirtilen key ile eklenen obje , expire ile verilen zaman boyunca yaşar. expire mykey 5 (5 sn) şeklinde expire değeri atamak için komut satırı aracı da bulunur. Örneğin Java da
Jedis jedis = new Jedis("localhost");
jedis.set(cacheKey, "cached value");
jedis.expire(cacheKey, 15);
şeklinde eklenen bir key’e expire süresi atanabilir.

Kavram

Expire

Tanım: Redis'te bir key ile eklenen verilerin ne zaman expire olacağını belirtir. Örneğin expire mykey 5 komutu ile mykey ile eklenen bilgi 5 sn sonra expire olur.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir