Redis Nedir?

Redis, default olarak 6379 portu üzerinde çalışan, verileri bellek üzerinde (in-memory) tutan bir NoSql veritabanıdır. C programlama dili ile yazılmıştır. Redis’in açılımı “Remote Dictionary Server”dır. Verileri anahtar-değer ikilisi(key-value pair) biçiminde tutar ve verilere erişim çok hızlıdır. Bu yüzden de cache işlemleri için yoğun olarak kullanılır.

Bir Redis sisteminde 16384 adet hashslot bulunur. Peki hashslot nedir? Redisi bir veri saklama dolabı olarak düşünecek olursak herbir dolap çekmecesini Redis 1 hashslot olarak kabul eder ve Redis keyleri bu hashslot adı verilen bu yapıda saklar. Redis’te 16384 hashslot olması sadece 16384 key saklanabilir demek değildir. Sisteminizin yapısına ve büyüklüğüne göre her bir slotta binlerce, on binlerce key saklanabilir. Peki Redis hangi verinin hangi slotta saklanacağına nasıl karar verir. Redis saklayacağınız her bir key için CRC16 Hash algoritması ile hesaplama yapar ve bu çıkan değerin 16384 sayısına göre modu alınır. Ardından çıkan sonuca göre saklanacak key’in slotu belirlenmiş olur.

Redis verileri bellek üzerinde tutar demiştik ek olarak verilerin kalıcılığının sağlanması için 2 tür yöntem kullanır. Bunlar RDB(Redis Database) ve AOF(Append Only File)’dır. Birinci yöntem için Config dosyasında yapılan ayara göre belirli aralıklarla rdb yani database snapshot alınır, ikinci yöntemde ise AOF ile veriler disk üzerinde saklanır.

Redis Kurulumu

Redis kurulum için öncelikle şunu belirtmekte fayda görüyorum. Redisi sanal ya da fiziksel makinelere veya docker üzerine kurabiliriz. Ben Redisi Ubuntu 20.04 üzerinde çalıştıracağım.

sudo apt update

sudo apt install redis-server

sudo systemctl status redis-server

Redis kurulumunu yaptık status redis-server komutu ile Redisin aktif olarak çalıştığını kontrol ettik. Redis çalışıyor fakat redisin hangi iplere hizmet vereceği, hangi porttan çalışacağını (portu değiştirmek istersek), snapshot alınacak mı, parola olacak mı gibi parametrelerin tutulduğu bir config dosyası bulunmaktadır. etc/redis klasörü altında bulunan redis.conf dosyasını aşağıdaki komut ile açıp inceleyip, düzenleme yapabiliriz. Burada bind kısmında varsayılan olarak bind 127.0.0.1 kısmını görürüz. Yani redise sadece localhost üzerinden erişebiliriz demektir. Eğer sunucumuzun özel bir ip adresi varsa 127.0.0.1 arkasında sunucunun statik ip adresini yazmalıyız ve aşağıda bulunan restart komutu ile redisi restart etmeliyiz.

sudo nano /etc/redis/redis.conf

sudo systemctl restart redis-server

Redis Kullanım Alanları

  • Cache Sistemi,
  • Session İşlemleri,
  • Mesaj Kuyruk İşlemleri,
  • Pub/Sub İşlemleri,
  • Sayma İşlemleri için sıklıkla kullanılır.

Redis Veri Tipleri

  • String
  • List
  • Set
  • Sorted Set
  • Hash
  • HyperLogLogs