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.
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.
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.