Redis

03/03/2018wutlu

Bu yazıda sizlere redis hakkında temel bilgi ve kurulum dökümanı sağlayacağım.

Redis nedir?

Redis; key, value mantığıyla ve en önemlisi ram’de çalışan basit bir açık kaynak nosql veritabanı biçimidir.

Redis ram’de çalıştığı için çok hızlı işlemler yapabiliyor. (İsterseniz disk’e yazma işlemleri de yapabilirsiniz fakat bu konuda pek tercih sebebi değildir.) Çalışmasıyla ilgili bir örnek vermemiz gerekirse; Bir haber sitesi düşünün, içerisinde 1 milyon haber olup, her dakika artmakta olan veriler. Aynı zamanda anlık 50k ziyaretçimiz olsun. Böyle bir yapı için daha öncesinden nosql bir veritabanı veya search çözümleri kullanmamış olabilirsiniz. Bu durumda Redis hayatınızı kurtarabilir. 50k anlık ziyaretçi demek, haberler tablomuza anlık olarak 50.000 sorgu ve bazen aynı haber kaydına binlerce sorgu demek. Haliyle bu durum sitenizin performansını düşürecek ve server maliyetlerinizi artıracak.

Redis ile isterseniz tüm kayıtlarınızı ram’e alırsınız. İsterseniz belirli aralıklarla güncelleme yaparsınız. Çözüm size kalmış.

Kurulum

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install redis-server
sudo apt-get install php-redis
sudo nano /etc/redis/redis.conf

maxmemory 128mb
maxmemory-policy allkeys-lru
sudo systemctl restart redis-server.service
sudo systemctl enable redis-server.service
redis-cli monitor
redis-cli

Redis-cli ile komut istemine girdikten sonra aşağıdaki dökümanı izleyerek devam edebilirsiniz.

Basitce Kullanım

SET user:"Alper" "email: mutlu@veri.zone, born:1993"

GET user:Alper
EXPIRE user:Alper 10
TTL user:Alper
SET hit 100
INCRBY hit 10
INCR hit
SADD brands Peugeot
SADD brands Porche
SADD brands Lamborghini

SMEMBERS brands

Sıralı Kayıtlar

ZADD: Üyeleri sıralı bir gruba ekler.
ZRANGE: Dizine göre düzenlenmiş bir sıralı kümenin üyelerini görüntüler. (varsayılan olarak a-z)
ZREVRANGE: Dizine göre düzenlenmiş sıralı bir kümenin üyelerini görüntüler. (z-a)
ZREM: Üyeleri sıralı kümeden kaldırır.

> ZADD users 10 Ahmet
(integer) 1
> ZADD users 12 Mehmet
(integer) 1
> ZADD users 120 Yılmaz
(integer) 1
> ZADD users 33 Seyhun
(integer) 1
> ZADD users 90 Kadir
(integer) 1

redis 127.0.0.1:6379> ZRANGE users 0 -1
1) "Ahmet"
2) "Mehmet"
4) "Seyhun"
5) "Kadir"
3) "Yılmaz"

Sıralı Kayıtlar dışında toplu kayıt yapabilirsiniz. Milyonlarca kaydın başına ve sonuna çok hızlı bir şekilde yeni kayıtlar ekleyebilirsiniz.

LPUSH: Bir listenin başlangıcına bir değer ekler.
RPUSH: Bir listenin sonuna bir değer ekler.
LPOP: Bir listedeki ilk öğeyi kaldırır.
RPOP: Listedeki son öğeyi kaldırır.
LREM: Listeden elemanları kaldırır.
LENZ: Listeden bir dizi öğeyi alır.
LTRIM: Bir listeyi değiştirir, böylece yalnızca belirli bir aralık bırakır.

> RPUSH news.user ahmet
(integer) 1
> RPUSH news.user mehmet
(integer) 2
> RPUSH news.user cem
(integer) 3
> RPUSH news.user murat
(integer) 4
> RPUSH news.user kerim
(integer) 5

LRANGE news.users 0 -1
1) "kerim"
2) "ahmet"
3) "mehmet"
4) "cem"
5) "murat

Hashes

Hashes sorgusu birçok alanı olan nesneleri temsil etmek için kullanışlı bir araçtır. Az alanda çok veri depolamak üzere kurulmuştur. Bir karma 4 milyardan fazla alan-değer çifti depolayabilir.

HMSET: Birden fazla karma değeri ayarlar.
HSET: Karma alanını bir dize değeri ile ayarlar.
HGET: Bir karma alanının değerini alır.
HMGET: Verilen karma alanları için tüm değerleri alır.
HGETALL: Karma değerinin tüm değerlerini alır.

> HMSET user:1 username wutlu password 1abcD.2 email mutlu@veri.zone
OK
> HGETALL user:1
1) "username"
2) "wutlu"
3) "password"
4) "1abcD.2"
5) "email"
6) "mutlu@veri.zone"

Bunun yerine sadece belirli alanları almak için;

> HMGET user:1 username email
1) "mutlu"
"mutlu@veri.zone"

Umarım faydalı olmuştur, bir sonraki makalede görüşmek üzere…

Leave a comment

Your email address will not be published. Required fields are marked *

Prev Post Next Post