Merhaba arkadaşlar, yakın zamanlarda Python programlama dilini kullanarak bir projeye başladım ve Django framework kullanma deneyimi elde ettim. Bu yazımda Django uygulaması üzerinde Redis ile nasıl haberleşebiliriz bu konuyu aktarmaya çalışacağım.

Redis logo

Bir önceki yazımda OS-X üzerinde Redis kurulumunu aktarmıştım, bu yazımda yine OS-X üzerinden ilerleyeceğim, eğer kurulu değil ise onu okuyarak başlangıç yapabilirsiniz.

Eğer zaten kurulu ise konsol da redis-cli ping komutunu yazıp PONG döndüğünü görürseniz devam edebilirsiniz.

Virtual Enviroment nedir? bu kaynaktan okuyarak anlayabilirsiniz.

Temel gereksinimler:

  • Redis
  • Python
  • Virtual Enviroment (Zorunlu olmasa da kurulu olması iyi olur.)

Projenizin de oluşturulduğunu düşünürsek virtualenv ile devam edebiliriz.

Aşağıdaki komutta bulunan eskvenv yerine sizin verdiğiniz enviroment isminiz olacak.

source eskvenv/bin/activate

Proje kaynak klasörünüzde yukarıdaki komutu çalıştırın. Çalıştırdıktan sonra aşağıdaki gibi bir dönüş olacaktır.

(eskvenv) ➜

sonrasında aşağıdaki komutu kullanarak, python django için geliştirilen, django redis ekletisini kuracağız.

$ pip install django-redis-cache 

bu komutu yazdıktan sonra redis cache eklentisi eskvenv bağımlılığında bir kurulum yapacaktır geneli etkilemeyecektir. Kurulum bittikten sonra, projemizde bulunan settings.py dosyamıza aşağıdaki tanımı yapalım.

CACHES = {
"default": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": "redis://127.0.0.1:6379",
    "OPTIONS": {
        "CLIENT_CLASS": "django_redis.client.DefaultClient",
    }
  }
}

LOCATION özelliğindeki sunucu adresi farklılık gösterebilir bunun için konsolda aşağıda ki komutu yazalım.

redis-cli

Konsolda bizim geçerli olan redis sunucu konsolumuza geçiş yapacaktır. Birden fazla client varsa aşağıdaki komut işe yarayabilir.

redis-cli client list

CACHES tanımını yaptıktan sonra kod kısmında nasıl kullanacağımıza geçelim.

cacheUtils.py dosyamızın olduğunu varsayarsak aşağıda ki gibi bir aşagıdaki fonksyinlar basit olarak işimizi görecektir.

--> cache sınıfını import edelim.
from django.core.cache import cache

Key-Value bir cache tutmak istiyorsak direk set komutunu kullanabiliriz.
cache.set('cache-key', 'bu bir cache key değeridir..')

Key-Value tanımlanan değeri redis üzerinden almak için
cache.get('cache-key') # eğer cache var ise değerini getirecektir.

Birden fazla değer set etmek için:
cache.set_many({'yellow': 250, 'blue': 350, 'white': 450})

Birden fazla değeri getirmek için:
cache.get_many(['blue', 'yellow', 'white']) 
# dönecek değerler {'blue': 350, 'yellow': 250, 'white': 450}

Complex tipleri tutmak için:
cache.set('cache-key', {
    'string'    : 'elma bir meyvedir.',
    'int'       : 9876,
    'list'      : [32, 23, 35, 65],
    'dict'      : {'Y': 9, 'X' : 5, 'Z':98},
    'tuple'     : (9, 8, 7, 6),
   
})

Kısaca size Python ve Django kullanarak Redis üzerine veri yazmayı ve okumayı basit olarak aktarmaya çalıştım.

Umarım faydalı bir içerik olmuştur.

Sevgilerle. Akın.