Adını Remote Dictionary Server, kelimelerinin kısaltmasından alan Redis bir çok özelliği bünyesinde barındır.

Redis logo
Resim 1. Redis logo

Redis Nedir?

Redis, bilgisayarın hafızasında çalışan hızlı ve açık kaynaklı veritabanıdır. Redis genellikle önbellekleme için kullanılır fakat içerdiği diğer özellikleriyle uygulama veritabanı olarak da kullanılabilir.

Redis’in Avantajları Nelerdir?

Redis tüm verileri hafıza üzerinde bulunduğundan çok hızlı çalışır. Redis açık kaynaklı bir uygulamadır, verilerin anlık durumu kaydedilebilir. Tüm verileri bir dosyaya yazabilir böylece ana veritabanı olarak kullanılabilir. Ölçeklenebilir ve kolay kullanım sağlar. PubSub alt yapısına sahiptir.

Redis Kurulumu

Redis Server kurmak için;

  1. Terminal açılır.
  2. Terminal ekranında;

Kod

sudo apt-get install redis-server

Redis Server kurulumunu kontrol etmek için;

Kod

redis-server --version

Kod

redis-cli --version

Redis Command Line Interface açmak için;

Kod

redis-cli

Redis Command Line Interface ortamını Türkçe harf destekli açmak için;

Kod

redis-cli --raw

Redis uzak sunucuya bağlanmak için; redis uzak sunucu ip ve redis port numarası yazılır;

Kod

redis-cli -h 127.0.0.1 -p 6379

Redis Command Line Interface ortamından çıkmak için;

Kod

quit

Redis Server bağlantısını kontrol etmek için;

Kod

ping

PONG döner ise bağlantı başarılıdır.

Ekrana yazı yazdırmak için;

Kod

echo "Merhaba Dünya"

Redis String

String değer tutmak için kullanılır.

Değer eklemek için;

Kod

set firstName Aydan
set fullName "Aydan GELMİŞ"
set date:of:birth 2022.12.30
set "Date of Birth" 2022.12.30

Değeri almak için;

Kod

get firstName
get fullName
get date:of:birth
get "Date of Birth"

Birden fazla değeri almak için;

Kod

mget firstName fullName

Değerin karakter uzunluğu getirir;

Kod

strlen fullName

Tam sayı değerini bir attırır;

Kod

incr count

Tam sayı değerini bir eksiltir;

Kod

decr count

Değeri silmek için;

Kod

del firstName

Tüm değerleri silmek için;

Kod

flushall

Anahtar olup olmadığını kontrol etmek için;

Kod

exists firstName

Var ise 1 yok ise 0 döner.

Tüm anahtarları görmek için;

Kod

keys *

Redis List

String değerleri liste olarak tutmak için kullanılır.

Değeri liste olarak kaydeder;

Kod

lpush people "kamil"
lpush people "aydan"
lpush people "altan"
lpush people "özgür"
lpush people "tayfun"

Listedeki tüm değerleri gösterir;

Kod

lrange people 0 -1

Listedeki yazılan aralıktaki olan öğelerin değerlerini gösterir;

Kod

lrange people 2 4

Değeri listenin en altına ekler;

Kod

rpush people "ışın"

Listenin öğe sayısını verir;

Kod

llen people

Listedeki en üstteki elemanı siler;

Kod

lpop people

Listedeki en alttaki elemanı siler;

Kod

rpop people

Yazılan değerden önceki sıraya yeni değer ekler;

Kod

linsert people before "altan" "sertaç"

Yazılan dizindeki değeri verir;

Kod

lindex people 2

Yazılan dizindeki değeri değiştirir;

Kod

lset people 0 "nizami"

Listeyi sıralar;

Kod

sort people ALPHA
sort people desc ALPHA

Redis Set

Tekil değerleri dizi halinde tutmak için kullanılır;

Set dizisine değer ekler;

Kod

sadd cities "Kırklareli"
sadd cities "Kırşehir"
sadd cities "Konya"
sadd cities "Kocaeli"
sadd cities "Kars"

Set dizisine birden fazla değer ekler;

Kod

sadd cities "Kastamonu" "Kırıkkale" "Kahramanmaraş"

Set dizisindeki tüm değerleri yazar;

Kod

smembers cities

Set dizisindeki değerin olup olmadığını yazar;

Kod

sismember cities "Kahramanmaraş"

Set dizisindeki değerlerin sayısını verir;

Kod

scard cities

Set dizisindeki değeri başka diziye taşır;

Kod

smove cities citiesVisited "Konya"

Set dizisindeki değeri siler;

Kod

srem citiesVisited "Kırklareli"

İki set arasındaki farklı öğeleri getirir;

Kod

sdiff cities citiesVisited

iki set arasındaki farklı öğeleri yeni set dizisine kaydeder;

Kod

sdiffstore citiesDifferent cities citiesVisited

Setler içindeki aynı öğeleri getirir;

Kod

sinter cities citiesVisited citiesOld

Setler içindeki aynı öğeleri yeni set dizisine kaydeder;

Kod

sinterstore newSet cities citiesVisited citiesOld

Set dizilerini birleştirir;

Kod

sunion cities citiesVisited

Set dizilerini birleştirip kaydeder;

Kod

sunionstore newSet cities citiesVisited

Redis Sorted Set

Tekil değerleri dizi halinde istenen sıralamaya göre tutmak için kullanılır;

Sorted set dizisine değer ekler;

Kod

zadd users 1978 "Kamil"
zadd users 1970 "Aydan"
zadd users 1980 "Tayfun"

Sorted set dizisindeki değerin sıralamasını verir;

Kod

zrank users "Aydan"

Sorted set dizisindeki değerin sıralamaya göre getirir;

Kod

zrange users 0 -1

Sorted set dizisindeki değerleri ve sıralamalarını getirir;

Kod

zrange users 0 -1 withscores

Sorted set dizisindeki değerin tersten sıralamaya göre getirir;

Kod

zrevrange users 0 -1

Sorted set dizisindeki öğe sayısını verir;

Kod

zcard users

Sorted set dizisindeki öğeyi siler;

Kod

zrem users "Aydan"

Sorted set dizisindeki öğenin sıralama değerini verir;

Kod

zscore users "Kamil"

Sorted set dizisindeki öğenin sıralama değerini arttırır;

Kod

zincrby users 100 "Kamil"

Sorted set dizisinde yazılan dizin aralığındaki değerleri siler;

Kod

zremrangebyrank users 0 2

Redis Hash

Değerleri istenen gruplamaya göre tutmak için kullanılır.

Hashe değer ekler;

Kod

hset user:1234 userName "agelmis" firstName "Aydan" lastName "Gelmiş"

Hashdeki değeri gösterir;

Kod

hget user:1234 userName

Hashdeki tüm anahtar ve değerleri gösterir;

Kod

hgetall user:1234

Hashdeki tüm değerlerin sayısını gösterir;

Kod

hlen user:1234

Hashdeki tüm değerleri gösterir;

Kod

hvals user:1234

Hashdeki girilen anahtardaki değerlerin karakter uzunluğunu gösterir;

Kod

hstrlen user:1234 userName

Hashde anahtarın olup olmadığını kontrol eder;

Kod

hexists user:1234 name

Hashde anahtar yoksa ekler;

Kod

hsetnx user:1234 name Kamil

Hashdeki anahtarı ve değerini siler;

Kod

hdel user:1234 userName

Tüm hashi siler;

Kod

del user:1234

Redis HyperLogLog

Tekil öğelerin sayısını bulmak için kullanılır. Sadece pfadd, pfcount, pfmerge komutları vardır;

Loglara yeni öğe ekler. Loglarda aynı öğe varsa eklemez;

Kod

pfadd logs20221230 "Senegal"
pfadd logs20221230 "Somali" "Senegal" "Tanzanya" "Nijerya"

Loglardaki öğe sayısını verir;

Kod

pfcount logs20221230

Farklı Logları yeni girilen isimdeki log değişkeninde birleştirir. Aynı öğe varsa birleştirmez sadece tekil öğeleri birleştirir;

Kod

pfmerge logsMerged logs20221230 logs20221231

Redis Geospatial

Koordinat bilgilerini tutmak ve aramak için kullanılır;

Koordinat ekler;

Kod

geoadd myHouses 41.30077379267293 27.54168184829974 Büyükkarıştıran

Birden fazla koordinat ekler;

Kod

geoadd myHouses 41.402943833021645, 27.364776803564922 Lüleburgaz 41.73469389314703 27.224402294969313 Kırklareli

Koordinat adlarını getirir;

Kod

zrange myHouses 0 -1

Girilen koordinat değerlerini verir;

Kod

geopos myHouses Lüleburgaz

Girilen koordinatın geohash değerini verir;

Kod

geohash myHouses Lüleburgaz

Girilen koordinatlar arası kuş uçuşu mesafeyi verir;

Kod

geodist myHouses Kırklareli Büyükkarıştıran km

Girilen koordinat çevresindeki lokasyonları verir;

Kod

georadius myHouses 41.30077379267293 27.54168184829974 25 km withdist withcoord

Girilen anahtar değeri çevresindeki lokasyonları verir;

Kod

georadiusbymember myHouses Büyükkarıştıran 25 km

Redis Transactions

Birden fazla komutu ard arda tek seferde transaction olarak çalıştırır;

Kod

multi

set firstname Aydan
set lastname Gelmiş
get firstname
set username aydangelmis

exec

Hatalı işlem yapılır ise transaction içerisindeki hata vermeyen tüm kodlar çalıştırılır. İşlem geri alınmaz;

Kod

multi

set firstname Aydan
set lastname Gelmiş
lpop firstname
set age 21

exec

Birden fazla komutu ard arda tek seferde çalıştırma işlemini iptal eder;

Kod

multi

set firstname Aydan
set lastname Gelmiş
get firstname
set username aydangelmis

discard

Değişkeni izleme moduna alır, transaction işlemi başladıktan sonra izlenen değişken başka kullanıcı tarafından değiştirilir ise tüm transaction işlemlerini iptal eder;

Kod

set count 39
get count

watch count

multi
set count 40

exec

exec komutundan sonra değişken izleme işlemi de sona erer.

Redis PubSub

Yayıncı ve abone altyapısı sağlar;

Kanal oluşturur ve dinler;

Kod

subscribe kanal1

Kanallar oluşturur ve dinler;

Kod

subscribe kanal5 kanal7

İlgili kanaldan yayın yapar;

Kod

publish kanal1 "Merhaba Dünya"

Patternli kanal oluşturur ve dinler;

Kod

psubscribe kanal*

psubscribe kanal?

İsim ile eşleşen kanallara yayın yapar;

Kod

publish kanal "Merhaba"

Patternsiz kanalları getirir;

Kod

pubsub channels

Kanallı dinleyen üye sayısını verir;

Kod

pubsub numsub kanal1

Patternli kanal sayısını getirir;

Kod

pubsub numpat

Kanalı dinlemeyi bırakır;

Kod

unsubscribe kanal5

Redis Veri Saklama

Rediste iki farklı veri saklama seçeneği vardır.

Snapshot

Mevcut verilerin durumunu kaydeder;

Kod

save

60 dakikada bir 1000 değişiklik yapılmış ise kaydeder;

Kod

save 60 1000

Snapshopt dosyası;

Kod

/var/lib/dump.rdb

Append Only File

Tüm değişiklikleri dosyaya yazar;

Kod

appendonly yes

Redis config dosyası;

Kod

/etc/redis/redis.conf

Kaynaklar

  1. Redis Explained , architecturenotes.co, 14.01.2023 tarihinde alındı.
  2. 10 Advantages of Redis , dzone.com, 14.01.2023 tarihinde alındı.
  3. Redis , aws.amazon.com, 14.01.2023 tarihinde alındı.
  4. Redis Crash Course ,youtube.com/WebDevSimplified, 14.01.2023 tarihinde alındı.
  5. Redis Course - In-Memory Database Tutorial , youtube.com/freecodecamp, 14.01.2023 tarihinde alındı.
  6. Redis Crash Course - Transactions , youtube.com/CodeWithTim, 14.01.2023 tarihinde alındı.
  7. Redis hashes , redis.io, 14.01.2023 tarihinde alındı.
  8. HyperLogLog , redis.com, 14.01.2023 tarihinde alındı.
  9. Remove complete hashset at once in redis , stackoverflow.com, 14.01.2023 tarihinde alındı.
  10. Transactions , redis.io, 14.01.2023 tarihinde alındı.

 


Beğen