{"id":36030,"date":"2025-12-07T00:40:47","date_gmt":"2025-12-06T21:40:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36030"},"modified":"2025-12-07T00:40:47","modified_gmt":"2025-12-06T21:40:47","slug":"rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/","title":{"rendered":"Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi"},"content":{"rendered":"<p><body><\/p>\n<h2>Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Modern uygulama geli\u015ftirme d\u00fcnyas\u0131nda, veriye h\u0131zl\u0131 eri\u015fim ve etkin bellek y\u00f6netimi kritik \u00f6neme sahiptir. Bellek i\u00e7i bir veri yap\u0131s\u0131 deposu olan Redis, bu ihtiya\u00e7lar\u0131 kar\u015f\u0131lamak i\u00e7in e\u015fsiz yetenekler sunar. Veri \u00f6nbelleklemeden oturum y\u00f6netimine, ger\u00e7ek zamanl\u0131 analizden mesaj kuyruklar\u0131na kadar geni\u015f bir kullan\u0131m alan\u0131na sahip olan Redis, \u00f6zellikle &#8220;anahtar s\u00fcreleri&#8221; (key expiration) \u00f6zelli\u011fi sayesinde verilerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc programatik olarak kontrol etme imkan\u0131 sunar. Bu \u00f6zellik, hem bellek kullan\u0131m\u0131n\u0131 optimize etmek hem de verilerin g\u00fcncelli\u011fini sa\u011flamak a\u00e7\u0131s\u0131ndan vazge\u00e7ilmezdir.<\/p>\n<p>Bu makale, Redis&#8217;te anahtarlar\u0131n s\u00fcresini nas\u0131l belirleyece\u011finizi, bu mekanizman\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, farkl\u0131 senaryolarda nas\u0131l etkin bir \u015fekilde kullan\u0131labilece\u011fini ve kar\u015f\u0131la\u015f\u0131labilecek potansiyel sorunlar\u0131 nas\u0131l a\u015faca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde inceleyecektir. Redis&#8217;in sundu\u011fu temel komutlardan geli\u015fmi\u015f kullan\u0131m senaryolar\u0131na, bellek y\u00f6netimi stratejilerinden i\u00e7 i\u015fleyi\u015fine kadar geni\u015f bir yelpazede bilgi sunarak, Redis&#8217;in anahtar s\u00fcresi y\u00f6netimini derinlemesine anlaman\u0131za yard\u0131mc\u0131 olmay\u0131 hedefliyoruz.<\/p>\n<h2>Temel Anahtar S\u00fcresi Mekanizmalar\u0131<\/h2>\n<p>Redis, anahtarlar\u0131n belirli bir s\u00fcre sonra otomatik olarak silinmesini sa\u011flayan birka\u00e7 temel komut sunar. Bu komutlar, verilerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6netmek i\u00e7in esnek ve g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r.<\/p>\n<h3>EXPIRE Komutu<\/h3>\n<p><code>EXPIRE<\/code> komutu, bir anahtara saniye cinsinden bir ya\u015fam s\u00fcresi (TTL &#8211; Time To Live) atamak i\u00e7in kullan\u0131l\u0131r. Belirtilen saniye s\u00fcresi doldu\u011funda, Redis anahtar\u0131 otomatik olarak siler.<\/p>\n<pre><code class=\"language-redis\">EXPIRE mykey 60<\/code><\/pre>\n<p>Bu komut, <code>mykey<\/code> anahtar\u0131n\u0131n 60 saniye sonra s\u00fcresinin dolmas\u0131n\u0131 sa\u011flar. E\u011fer anahtar zaten s\u00fcresi dolmu\u015fsa veya yoksa, komut bir etki yaratmaz. E\u011fer anahtar\u0131n zaten bir TTL&#8217;i varsa, bu komut yeni TTL de\u011feri ile eskisini ge\u00e7ersiz k\u0131lar.<\/p>\n<h3>PEXPIRE Komutu<\/h3>\n<p><code>PEXPIRE<\/code> komutu, <code>EXPIRE<\/code> ile ayn\u0131 i\u015flevi g\u00f6r\u00fcr, ancak ya\u015fam s\u00fcresini milisaniye cinsinden belirtmenize olanak tan\u0131r. Bu, daha hassas zaman kontrol\u00fc gerektiren senaryolar i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-redis\">PEXPIRE mykey 10000<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>mykey<\/code> anahtar\u0131 10000 milisaniye (10 saniye) sonra silinecektir.<\/p>\n<h3>EXPIREAT ve PEXPIREAT Komutlar\u0131<\/h3>\n<p>Bazen bir anahtar\u0131n belirli bir s\u00fcre sonra de\u011fil, belirli bir Unix zaman damgas\u0131nda (timestamp) s\u00fcresinin dolmas\u0131n\u0131 istersiniz. <code>EXPIREAT<\/code> ve <code>PEXPIREAT<\/code> komutlar\u0131 bu ihtiyac\u0131 kar\u015f\u0131lar.<\/p>\n<p><code>EXPIREAT<\/code> komutu, saniye cinsinden bir Unix zaman damgas\u0131 al\u0131r:<\/p>\n<pre><code class=\"language-redis\"># \u015eu anki zamandan 1 dakika sonraki Unix zaman damgas\u0131n\u0131 hesaplayal\u0131m\n<h2>\u00d6rne\u011fin, \u015fu an 1678886400 ise, 1 dakika sonras\u0131 1678886460 olur.<\/h2>\nEXPIREAT mykey 1678886460<\/code><\/pre>\n<p><code>PEXPIREAT<\/code> komutu ise milisaniye cinsinden bir Unix zaman damgas\u0131 al\u0131r:<\/p>\n<pre><code class=\"language-redis\"># \u015eu anki zamandan 10 saniye sonraki Unix milisaniye zaman damgas\u0131n\u0131 hesaplayal\u0131m\n<h2>\u00d6rne\u011fin, \u015fu an 1678886400000 ise, 10 saniye sonras\u0131 1678886410000 olur.<\/h2>\nPEXPIREAT mykey 1678886410000<\/code><\/pre>\n<p>Bu komutlar, \u00f6zellikle farkl\u0131 sistemler aras\u0131nda senkronize edilmesi gereken veya belirli bir takvim olay\u0131na ba\u011fl\u0131 anahtar s\u00fcreleri i\u00e7in kullan\u0131\u015fl\u0131d\u0131r. Her zaman UTC zaman damgalar\u0131 kullanmak, zaman dilimi sorunlar\u0131n\u0131 \u00f6nlemek i\u00e7in en iyi uygulamad\u0131r.<\/p>\n<h3>TTL ve PTTL Komutlar\u0131<\/h3>\n<p>Bir anahtar\u0131n kalan ya\u015fam s\u00fcresini \u00f6\u011frenmek i\u00e7in <code>TTL<\/code> ve <code>PTTL<\/code> komutlar\u0131n\u0131 kullanabilirsiniz.<br \/>\n<code>TTL<\/code> komutu, anahtar\u0131n kalan ya\u015fam s\u00fcresini saniye cinsinden d\u00f6nd\u00fcr\u00fcr:<\/p>\n<pre><code class=\"language-redis\">TTL mykey<\/code><\/pre>\n<p>Geri d\u00f6n\u00fc\u015f de\u011ferleri:<br \/>\n*   Pozitif bir tamsay\u0131: Kalan saniye say\u0131s\u0131.<br \/>\n*   <code>-1<\/code>: Anahtar\u0131n s\u00fcresi dolmam\u0131\u015ft\u0131r ve s\u00fcresi ayarlanmam\u0131\u015ft\u0131r (kal\u0131c\u0131d\u0131r).<br \/>\n*   <code>-2<\/code>: Anahtar mevcut de\u011fildir.<\/p>\n<p><code>PTTL<\/code> komutu ise kalan ya\u015fam s\u00fcresini milisaniye cinsinden d\u00f6nd\u00fcr\u00fcr:<\/p>\n<pre><code class=\"language-redis\">PTTL mykey<\/code><\/pre>\n<p>Geri d\u00f6n\u00fc\u015f de\u011ferleri <code>TTL<\/code> ile benzerdir, ancak milisaniye cinsindendir.<\/p>\n<h3>PERSIST Komutu<\/h3>\n<p>Bir anahtar\u0131n s\u00fcresini kald\u0131rmak ve onu kal\u0131c\u0131 hale getirmek i\u00e7in <code>PERSIST<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-redis\">PERSIST mykey<\/code><\/pre>\n<p>Bu komut, anahtar\u0131n s\u00fcresini s\u0131f\u0131rlar ve art\u0131k otomatik olarak silinmez. Komut ba\u015far\u0131l\u0131 olursa <code>1<\/code>, anahtar\u0131n zaten s\u00fcresi yoksa veya mevcut de\u011filse <code>0<\/code> d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h3>SET Komutunda TTL Belirleme<\/h3>\n<p>Redis&#8217;in 2.6.12 s\u00fcr\u00fcm\u00fcnden itibaren, <code>SET<\/code> komutu ile bir anahtar olu\u015fturulurken veya g\u00fcncellenirken ayn\u0131 anda ya\u015fam s\u00fcresi de belirlenebilir. Bu, atomik bir i\u015flem oldu\u011fu i\u00e7in yar\u0131\u015f ko\u015fullar\u0131n\u0131 (race conditions) \u00f6nler ve kodun daha temiz olmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-redis\">SET mykey \"hello\" EX 60   # 60 saniye sonra s\u00fcresi dolar\nSET mykey \"hello\" PX 10000 # 10000 milisaniye sonra s\u00fcresi dolar\nSET mykey \"hello\" EX 60 NX # Sadece anahtar mevcut de\u011filse ayarla ve 60 saniye sonra s\u00fcresi dolar\nSET mykey \"hello\" EX 60 XX # Sadece anahtar mevcutsa ayarla ve 60 saniye sonra s\u00fcresi dolar<\/code><\/pre>\n<p><code>EX<\/code> (saniye) ve <code>PX<\/code> (milisaniye) parametreleri, <code>SET<\/code> komutuyla birlikte kullan\u0131labilir. Ayr\u0131ca <code>NX<\/code> (sadece anahtar mevcut de\u011filse ayarla) ve <code>XX<\/code> (sadece anahtar mevcutsa ayarla) gibi ko\u015fullu parametrelerle birle\u015ftirilerek daha karma\u015f\u0131k atomik i\u015flemler ger\u00e7ekle\u015ftirilebilir.<\/p>\n<h2>Anahtar S\u00fcresi Belirleme Senaryolar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>Redis&#8217;in anahtar s\u00fcresi \u00f6zelli\u011fi, bir\u00e7ok farkl\u0131 uygulama senaryosunda kritik bir rol oynar. Do\u011fru kullan\u0131ld\u0131\u011f\u0131nda, sistem performans\u0131n\u0131 art\u0131rabilir ve kaynak t\u00fcketimini optimize edebilir.<\/p>\n<h3>\u00d6nbellekleme (Caching)<\/h3>\n<p>Redis&#8217;in en yayg\u0131n kullan\u0131m alanlar\u0131ndan biri \u00f6nbelleklemedir. Veritaban\u0131 sorgu sonu\u00e7lar\u0131, API yan\u0131tlar\u0131 veya yo\u011fun hesaplama gerektiren veriler, Redis&#8217;te belirli bir s\u00fcre i\u00e7in \u00f6nbelle\u011fe al\u0131narak uygulama yan\u0131t s\u00fcreleri \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131labilir.<\/p>\n<p>*   <strong>Veritaban\u0131 Sorgu Sonu\u00e7lar\u0131<\/strong>: Bir kullan\u0131c\u0131 profili veya \u00fcr\u00fcn listesi gibi s\u0131k eri\u015filen veriler, veritaban\u0131ndan her seferinde \u00e7ekmek yerine Redis&#8217;te \u00f6nbelle\u011fe al\u0131nabilir. Veri g\u00fcncellendi\u011finde \u00f6nbellek ge\u00e7ersiz k\u0131l\u0131n\u0131r veya belirli bir s\u00fcre sonra otomatik olarak s\u00fcresi dolmas\u0131 sa\u011flan\u0131r.<\/p>\n<pre><code class=\"language-redis\">SET user:123:profile \"{...}\" EX 300 # 5 dakika \u00f6nbellekte tut<\/code><\/pre>\n<p>*   <strong>API Yan\u0131tlar\u0131<\/strong>: \u00dc\u00e7\u00fcnc\u00fc taraf bir API&#8217;den gelen yan\u0131tlar, ayn\u0131 iste\u011fin tekrar yap\u0131lmas\u0131 durumunda API kotas\u0131n\u0131 veya gecikmesini azaltmak i\u00e7in \u00f6nbelle\u011fe al\u0131nabilir.<\/p>\n<pre><code class=\"language-redis\">SET api:weather:istanbul \"{...}\" EX 600 # 10 dakika \u00f6nbellekte tut<\/code><\/pre>\n<p>*   <strong>Hesaplanan De\u011ferler<\/strong>: Yo\u011fun CPU kullanan algoritmalar\u0131n sonu\u00e7lar\u0131, her istekte yeniden hesaplanmak yerine \u00f6nbelle\u011fe al\u0131nabilir.<\/p>\n<p><strong>En \u0130yi Uygulama<\/strong>: \u00d6nbellek anahtarlar\u0131 i\u00e7in TTL de\u011ferlerini, verinin g\u00fcncellenme s\u0131kl\u0131\u011f\u0131na ve uygulaman\u0131z\u0131n tutarl\u0131l\u0131k gereksinimlerine g\u00f6re dikkatlice belirleyin. K\u0131sa TTL&#8217;ler daha taze veri sa\u011flarken, daha uzun TTL&#8217;ler daha az veritaban\u0131\/API y\u00fck\u00fc anlam\u0131na gelir.<\/p>\n<h3>Oturum Y\u00f6netimi (Session Management)<\/h3>\n<p>Kullan\u0131c\u0131 oturumlar\u0131, Redis&#8217;te anahtar s\u00fcresi ile y\u00f6netmek i\u00e7in m\u00fckemmel bir adayd\u0131r. Her kullan\u0131c\u0131 oturumu i\u00e7in bir anahtar olu\u015fturulur ve bu anahtara belirli bir oturum s\u00fcresi atan\u0131r.<\/p>\n<pre><code class=\"language-redis\">SET session:user:456:token \"abcxyz\" EX 3600 # 1 saat sonra oturum dolar<\/code><\/pre>\n<p>Kullan\u0131c\u0131 etkinli\u011fi olmad\u0131\u011f\u0131nda veya belirli bir s\u00fcre sonra oturumun otomatik olarak sona ermesi, g\u00fcvenlik ve kaynak y\u00f6netimi a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Kullan\u0131c\u0131 her etkile\u015fimde bulundu\u011funda, oturum anahtar\u0131n\u0131n TTL&#8217;i yenilenebilir (<code>EXPIRE<\/code> komutu ile).<\/p>\n<h3>Ge\u00e7ici Veriler (Temporary Data)<\/h3>\n<p>Redis, tek seferlik \u015fifreler (OTP), bildirimler veya i\u015flem kilitleri gibi ge\u00e7ici verileri depolamak i\u00e7in idealdir. Bu verilerin belirli bir s\u00fcre sonra otomatik olarak temizlenmesi, uygulaman\u0131n bellek ayak izini d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<p>*   <strong>Tek Seferlik \u015eifreler (OTP)<\/strong>: E-posta veya SMS ile g\u00f6nderilen OTP kodlar\u0131, genellikle birka\u00e7 dakika ge\u00e7erli kal\u0131r.<\/p>\n<pre><code class=\"language-redis\">SET otp:user:789 \"123456\" EX 300 # 5 dakika sonra OTP ge\u00e7ersiz olur<\/code><\/pre>\n<p>*   <strong>Kuyruk \u0130\u015fleri \u0130\u00e7in Kilitleme Mekanizmalar\u0131<\/strong>: Da\u011f\u0131t\u0131k sistemlerde bir g\u00f6revin ayn\u0131 anda birden fazla i\u015fleyici taraf\u0131ndan i\u015flenmesini \u00f6nlemek i\u00e7in kilitler kullan\u0131labilir. Bu kilitlere belirli bir s\u00fcre atanarak, bir i\u015fleyicinin \u00e7\u00f6kmesi durumunda kilidin sonsuza kadar kalmas\u0131 engellenir.<\/p>\n<pre><code class=\"language-redis\">SETNX lock:job:1 \"locked\" EX 60 # 60 saniye sonra kilit otomatik olarak serbest b\u0131rak\u0131l\u0131r<\/code><\/pre>\n<h3>Oran S\u0131n\u0131rlama (Rate Limiting)<\/h3>\n<p>Kullan\u0131c\u0131lar\u0131n veya IP adreslerinin belirli bir zaman diliminde yapabilece\u011fi istek say\u0131s\u0131n\u0131 s\u0131n\u0131rlamak (rate limiting), servislerin a\u015f\u0131r\u0131 y\u00fcklenmesini \u00f6nlemek i\u00e7in \u00f6nemlidir. Redis, bu t\u00fcr bir mekanizmay\u0131 anahtar s\u00fcreleri ve <code>INCR<\/code> komutu ile uygulamak i\u00e7in \u00e7ok uygundur.<\/p>\n<pre><code class=\"language-redis\"># Kullan\u0131c\u0131n\u0131n son 60 saniyedeki istek say\u0131s\u0131n\u0131 tut\nINCR user:123:requests:60s\nEXPIRE user:123:requests:60s 60 # Sadece ilk INCR'de EXPIRE \u00e7a\u011f\u0131r\u0131lmal\u0131 veya SET key 1 EX 60 NX kullan\u0131lmal\u0131<\/code><\/pre>\n<p>Bu yakla\u015f\u0131mda, <code>user:123:requests:60s<\/code> anahtar\u0131, kullan\u0131c\u0131n\u0131n son 60 saniyedeki istek say\u0131s\u0131n\u0131 tutar. Her istekte <code>INCR<\/code> \u00e7a\u011fr\u0131l\u0131r. Anahtar\u0131n s\u00fcresi 60 saniye olarak ayarlan\u0131r, b\u00f6ylece eski istekler otomatik olarak temizlenir. <code>SET key 1 EX 60 NX<\/code> kullan\u0131m\u0131, anahtar\u0131n sadece ilk kez olu\u015fturulurken TTL almas\u0131n\u0131 sa\u011flar, sonraki <code>INCR<\/code> \u00e7a\u011fr\u0131lar\u0131 TTL&#8217;i de\u011fi\u015ftirmez.<\/p>\n<h2>Anahtar S\u00fcresi ve Bellek Y\u00f6netimi<\/h2>\n<p>Redis&#8217;te anahtar s\u00fcreleri, bellek y\u00f6netimi stratejilerinin ayr\u0131lmaz bir par\u00e7as\u0131d\u0131r. \u00d6zellikle <code>maxmemory<\/code> ayar\u0131 ve &#8220;eviction&#8221; (\u00e7\u0131karma) politikalar\u0131 ile birlikte kullan\u0131ld\u0131\u011f\u0131nda, Redis&#8217;in bellek kullan\u0131m\u0131n\u0131 etkin bir \u015fekilde kontrol etmenizi sa\u011flar.<\/p>\n<h3>maxmemory Ayar\u0131<\/h3>\n<p><code>maxmemory<\/code> ayar\u0131, Redis&#8217;in kullanabilece\u011fi maksimum bellek miktar\u0131n\u0131 belirler. Bu s\u0131n\u0131ra ula\u015f\u0131ld\u0131\u011f\u0131nda, Redis&#8217;in nas\u0131l davranaca\u011f\u0131n\u0131 <code>maxmemory-policy<\/code> ayar\u0131 belirler.<\/p>\n<h3>Eviction Politikalar\u0131 (\u00c7\u0131karma Politikalar\u0131)<\/h3>\n<p>Redis, <code>maxmemory<\/code> s\u0131n\u0131r\u0131na ula\u015f\u0131ld\u0131\u011f\u0131nda hangi anahtarlar\u0131n silinece\u011fini belirlemek i\u00e7in \u00e7e\u015fitli \u00e7\u0131karma politikalar\u0131 sunar:<\/p>\n<p>*   <strong>noeviction<\/strong>: Bellek s\u0131n\u0131r\u0131na ula\u015f\u0131ld\u0131\u011f\u0131nda yeni yazma i\u015flemlerine izin vermez ve hata d\u00f6nd\u00fcr\u00fcr. Okuma i\u015flemlerine izin verir.<br \/>\n*   <strong>allkeys-lru<\/strong>: En az yak\u0131n zamanda kullan\u0131lan (Least Recently Used) anahtarlar\u0131, s\u00fcresi olup olmad\u0131\u011f\u0131na bak\u0131lmaks\u0131z\u0131n siler.<br \/>\n*   <strong>volatile-lru<\/strong>: Sadece s\u00fcresi belirlenmi\u015f (volatile) anahtarlar aras\u0131ndan en az yak\u0131n zamanda kullan\u0131lanlar\u0131 siler.<br \/>\n*   <strong>allkeys-lfu<\/strong>: En az s\u0131kl\u0131kta kullan\u0131lan (Least Frequently Used) anahtarlar\u0131, s\u00fcresi olup olmad\u0131\u011f\u0131na bak\u0131lmaks\u0131z\u0131n siler.<br \/>\n*   <strong>volatile-lfu<\/strong>: Sadece s\u00fcresi belirlenmi\u015f anahtarlar aras\u0131ndan en az s\u0131kl\u0131kta kullan\u0131lanlar\u0131 siler.<br \/>\n*   <strong>allkeys-random<\/strong>: Rastgele anahtarlar\u0131, s\u00fcresi olup olmad\u0131\u011f\u0131na bak\u0131lmaks\u0131z\u0131n siler.<br \/>\n*   <strong>volatile-random<\/strong>: Sadece s\u00fcresi belirlenmi\u015f anahtarlar aras\u0131ndan rastgele olanlar\u0131 siler.<br \/>\n*   <strong>volatile-ttl<\/strong>: Sadece s\u00fcresi belirlenmi\u015f anahtarlar aras\u0131ndan, TTL&#8217;i en k\u0131sa olanlar\u0131 siler.<\/p>\n<p>Anahtar s\u00fcreleri, <code>volatile-*<\/code> politikalar\u0131yla birlikte kullan\u0131ld\u0131\u011f\u0131nda \u00f6zellikle etkilidir. Bu politikalar, s\u00fcresi dolacak olan anahtarlara \u00f6ncelik vererek, hem bellek temizli\u011fini hem de verilerin g\u00fcncelli\u011fini korumaya yard\u0131mc\u0131 olur. Do\u011fru \u00e7\u0131karma politikas\u0131n\u0131 se\u00e7mek, uygulaman\u0131z\u0131n \u00f6nbellekleme ihtiya\u00e7lar\u0131na ve veri eri\u015fim desenlerine ba\u011fl\u0131d\u0131r.<\/p>\n<h2>Anahtar S\u00fcresi Mekanizmas\u0131n\u0131n \u0130\u00e7 \u0130\u015fleyi\u015fi<\/h2>\n<p>Redis, s\u00fcresi dolmu\u015f anahtarlar\u0131 iki ana mekanizma kullanarak siler: pasif ve aktif silme. Bu iki mekanizma bir arada \u00e7al\u0131\u015farak Redis&#8217;in bellek kullan\u0131m\u0131n\u0131 optimize etmesini ve s\u00fcresi dolmu\u015f anahtarlar\u0131 zaman\u0131nda temizlemesini sa\u011flar.<\/p>\n<h3>Pasif Silme (Passive Expiration)<\/h3>\n<p>Redis, bir anahtara eri\u015fildi\u011finde (\u00f6rne\u011fin, <code>GET<\/code>, <code>SET<\/code>, <code>INCR<\/code> gibi komutlarla) o anahtar\u0131n s\u00fcresinin dolup dolmad\u0131\u011f\u0131n\u0131 kontrol eder. E\u011fer anahtar\u0131n s\u00fcresi dolmu\u015fsa, Redis anahtar\u0131 siler ve komutu anahtar yokmu\u015f gibi i\u015fler. Bu, &#8220;tembel&#8221; (lazy) silme olarak da adland\u0131r\u0131l\u0131r \u00e7\u00fcnk\u00fc anahtar, ancak bir istemci taraf\u0131ndan talep edildi\u011finde kontrol edilir ve silinir.<br \/>\nBu mekanizma, Redis&#8217;in t\u00fcm anahtarlar\u0131n s\u00fcresini s\u00fcrekli olarak kontrol etme y\u00fck\u00fcnden kurtar\u0131r, ancak s\u00fcresi dolan anahtarlar\u0131n bir k\u0131sm\u0131n\u0131n bellekte bir s\u00fcre daha kalmas\u0131na neden olabilir, ta ki onlara eri\u015filene kadar.<\/p>\n<h3>Aktif Silme (Active Expiration)<\/h3>\n<p>Pasif silme, Redis&#8217;in s\u00fcresi dolan t\u00fcm anahtarlar\u0131 temizlemesi i\u00e7in yeterli de\u011fildir, \u00e7\u00fcnk\u00fc baz\u0131 anahtarlara uzun s\u00fcre eri\u015filmeyebilir. Bu nedenle Redis, arka planda d\u00fczenli olarak \u00e7al\u0131\u015fan bir &#8220;aktif silme&#8221; mekanizmas\u0131na sahiptir.<\/p>\n<p>Aktif silme, Redis&#8217;in her <code>hz<\/code> (varsay\u0131lan olarak 10) milisaniyede bir (veya yap\u0131land\u0131rmaya ba\u011fl\u0131 olarak daha s\u0131k) rastgele olarak se\u00e7ilen anahtarlar\u0131 kontrol etmesini i\u00e7erir. Bu i\u015flem \u015fu ad\u0131mlar\u0131 izler:<\/p>\n<p>1.  Rastgele olarak belirli say\u0131da anahtar se\u00e7ilir (varsay\u0131lan olarak 20).<br \/>\n2.  Se\u00e7ilen anahtarlar\u0131n s\u00fcresi dolmu\u015fsa, silinirler.<br \/>\n3.  E\u011fer bu iterasyonda s\u00fcresi dolmu\u015f anahtarlar\u0131n oran\u0131 belirli bir e\u015fi\u011fin \u00fczerindeyse (\u00f6rne\u011fin, %25&#8217;ten fazlas\u0131), i\u015flem tekrarlan\u0131r. Bu, s\u00fcresi dolmu\u015f anahtar say\u0131s\u0131n\u0131n \u00e7ok oldu\u011fu durumlarda daha agresif bir temizlik sa\u011flar.<br \/>\n4.  Bu d\u00f6ng\u00fc, belirli bir zaman limitine ula\u015fana kadar (\u00f6rne\u011fin, 1 milisaniye) veya s\u00fcresi dolmu\u015f anahtar oran\u0131 e\u015fi\u011fin alt\u0131na d\u00fc\u015fene kadar devam eder. Bu, aktif silme i\u015fleminin Redis&#8217;in ana i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131 uzun s\u00fcre bloke etmesini \u00f6nler.<\/p>\n<p>Aktif silme, Redis&#8217;in genel bellek kullan\u0131m\u0131n\u0131 makul seviyelerde tutmas\u0131na yard\u0131mc\u0131 olurken, pasif silme de tekil anahtar eri\u015fimlerinde g\u00fcncel durumu garanti eder. Bu iki mekanizma birlikte \u00e7al\u0131\u015farak Redis&#8217;in s\u00fcresi dolmu\u015f anahtarlar\u0131 verimli bir \u015fekilde y\u00f6netmesini sa\u011flar.<\/p>\n<h2>Potansiyel Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Anahtar s\u00fcresi y\u00f6netimi g\u00fc\u00e7l\u00fc bir \u00f6zellik olsa da, yanl\u0131\u015f kullan\u0131ld\u0131\u011f\u0131nda baz\u0131 sorunlara yol a\u00e7abilir. Bu sorunlar\u0131 anlamak ve \u00e7\u00f6z\u00fcmlerini bilmek, daha sa\u011flam Redis uygulamalar\u0131 geli\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Yar\u0131\u015f Ko\u015fullar\u0131 (Race Conditions)<\/h3>\n<p><code>SET<\/code> ve <code>EXPIRE<\/code> komutlar\u0131n\u0131 ayr\u0131 ayr\u0131 kullanmak, bir yar\u0131\u015f ko\u015fuluna yol a\u00e7abilir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-redis\">SET mykey \"value\"\nEXPIRE mykey 60<\/code><\/pre>\n<p>E\u011fer <code>SET<\/code> komutu \u00e7al\u0131\u015ft\u0131ktan hemen sonra, <code>EXPIRE<\/code> komutu \u00e7al\u0131\u015fmadan \u00f6nce Redis sunucusu \u00e7\u00f6kerse veya ba\u015fka bir istemci <code>mykey<\/code> anahtar\u0131n\u0131 silerse, <code>mykey<\/code> anahtar\u0131 s\u00fcresiz kalabilir veya hi\u00e7 olu\u015fturulmayabilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm<\/strong>: Redis&#8217;in 2.6.12 s\u00fcr\u00fcm\u00fcnden itibaren <code>SET<\/code> komutunun <code>EX<\/code> veya <code>PX<\/code> parametreleriyle birlikte kullan\u0131lmas\u0131, bu t\u00fcr yar\u0131\u015f ko\u015fullar\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<pre><code class=\"language-redis\">SET mykey \"value\" EX 60<\/code><\/pre>\n<p>Bu komut atomiktir, yani ya tamamen ba\u015far\u0131l\u0131 olur ya da hi\u00e7 olmaz.<\/p>\n<h3>TTL Kayb\u0131 (TTL Loss)<\/h3>\n<p>Bir anahtar\u0131n zaten bir TTL&#8217;i varken, o anahtar \u00fczerine yeni bir de\u011fer yazmak i\u00e7in sadece <code>SET<\/code> komutunu kullan\u0131rsan\u0131z, anahtar\u0131n mevcut TTL&#8217;i kaybolur ve anahtar kal\u0131c\u0131 hale gelir.<\/p>\n<pre><code class=\"language-redis\">SET mykey \"initial_value\" EX 60\n<h2>Bir s\u00fcre sonra<\/h2>\nSET mykey \"new_value\" # mykey art\u0131k kal\u0131c\u0131d\u0131r, TTL'i kayboldu<\/code><\/pre>\n<p><strong>\u00c7\u00f6z\u00fcm<\/strong>: E\u011fer anahtar\u0131n TTL&#8217;ini korumak veya yenilemek istiyorsan\u0131z, <code>SET<\/code> komutunu <code>EX<\/code> veya <code>PX<\/code> parametreleriyle birlikte kullan\u0131n veya <code>EXPIRE<\/code> komutunu tekrar \u00e7a\u011f\u0131r\u0131n.<\/p>\n<pre><code class=\"language-redis\">SET mykey \"initial_value\" EX 60\n<h2>Bir s\u00fcre sonra<\/h2>\nSET mykey \"new_value\" EX 60 # TTL'i yeniler\n<h2>Veya<\/h2>\nSET mykey \"new_value\"\nEXPIRE mykey 60 # TTL'i tekrar ayarlar<\/code><\/pre>\n<h3>Yanl\u0131\u015f Zaman Dilimi\/UTC Kullan\u0131m\u0131<\/h3>\n<p><code>EXPIREAT<\/code> veya <code>PEXPIREAT<\/code> komutlar\u0131 kullan\u0131l\u0131rken, zaman damgalar\u0131n\u0131n do\u011fru bir \u015fekilde olu\u015fturulmas\u0131 \u00f6nemlidir. Sunucunun ve istemcinin farkl\u0131 zaman dilimlerinde olmas\u0131, beklenmedik sonu\u00e7lara yol a\u00e7abilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm<\/strong>: Her zaman Unix zaman damgalar\u0131n\u0131 UTC (Coordinated Universal Time) olarak kullan\u0131n. Bu, zaman dilimi farkl\u0131l\u0131klar\u0131ndan kaynaklanan tutars\u0131zl\u0131klar\u0131 \u00f6nler ve uygulaman\u0131z\u0131n daha ta\u015f\u0131nabilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Y\u00fcksek Bellek T\u00fcketimi ve \u00c7\u0131karma Politikalar\u0131<\/h3>\n<p>\u00c7ok say\u0131da anahtar\u0131n s\u00fcresinin dolmak \u00fczere oldu\u011fu veya \u00e7ok uzun TTL&#8217;lere sahip oldu\u011fu durumlarda, Redis&#8217;in <code>maxmemory<\/code> s\u0131n\u0131r\u0131na ula\u015fmas\u0131 ve performans sorunlar\u0131 ya\u015famas\u0131 m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm<\/strong>:<br \/>\n*   <code>maxmemory<\/code> ayar\u0131n\u0131, Redis sunucunuzun fiziksel belle\u011fine uygun olarak yap\u0131land\u0131r\u0131n.<br \/>\n*   Uygulaman\u0131z\u0131n ihtiya\u00e7lar\u0131na en uygun <code>maxmemory-policy<\/code> politikas\u0131n\u0131 se\u00e7in. \u00d6rne\u011fin, \u00f6nbellekleme i\u00e7in <code>allkeys-lru<\/code> veya <code>volatile-lru<\/code> genellikle iyi bir se\u00e7imdir.<br \/>\n*   TTL de\u011ferlerini optimize edin. Gereksiz yere uzun TTL&#8217;ler kullanmaktan ka\u00e7\u0131n\u0131n.<\/p>\n<h3>Replication ve Persistence ile Etkile\u015fim<\/h3>\n<p>Redis, anahtar s\u00fcrelerini replikasyon ve kal\u0131c\u0131l\u0131k (persistence) mekanizmalar\u0131yla uyumlu bir \u015fekilde y\u00f6netir.<br \/>\n*   <strong>Replikasyon<\/strong>: Bir anahtara <code>EXPIRE<\/code> komutu uyguland\u0131\u011f\u0131nda, bu komut replika sunuculara da g\u00f6nderilir. S\u00fcresi dolan bir anahtar, master sunucuda silindi\u011finde replikalarda da silinir.<br \/>\n*   <strong>Kal\u0131c\u0131l\u0131k (RDB\/AOF)<\/strong>:<br \/>\n    *   <strong>RDB (Snapshotting)<\/strong>: RDB dosyas\u0131 olu\u015fturuldu\u011funda, s\u00fcresi dolmam\u0131\u015f anahtarlar ve onlar\u0131n kalan TTL&#8217;leri kaydedilir. S\u00fcresi dolmu\u015f anahtarlar RDB&#8217;ye dahil edilmez.<br \/>\n    *   <strong>AOF (Append-Only File)<\/strong>: Bir anahtar\u0131n s\u00fcresi doldu\u011funda, Redis AOF dosyas\u0131na bir <code>DEL<\/code> komutu ekler. Bu, AOF tabanl\u0131 kurtarmalarda s\u00fcresi dolmu\u015f anahtarlar\u0131n geri y\u00fcklenmemesini sa\u011flar.<\/p>\n<p>Bu mekanizmalar, Redis&#8217;in veri tutarl\u0131l\u0131\u011f\u0131n\u0131 ve b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc hem replikasyon hem de kal\u0131c\u0131l\u0131k senaryolar\u0131nda s\u00fcrd\u00fcrmesini sa\u011flar.<\/p>\n<h2>Geli\u015fmi\u015f Kullan\u0131m Senaryolar\u0131<\/h2>\n<p>Redis&#8217;in temel anahtar s\u00fcresi mekanizmalar\u0131 olduk\u00e7a g\u00fc\u00e7l\u00fc olsa da, baz\u0131 durumlarda daha yarat\u0131c\u0131 yakla\u015f\u0131mlar gerekebilir.<\/p>\n<h3>Redis Streams ile TTL Benzetimi<\/h3>\n<p>Redis Streams, olay g\u00fcnl\u00fcklerini ve mesaj kuyruklar\u0131n\u0131 y\u00f6netmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Streams i\u00e7indeki mesajlar\u0131n do\u011frudan bir TTL&#8217;i yoktur. Ancak, <code>XTRIM<\/code> komutu ile Stream&#8217;i belirli bir boyuta veya belirli bir zaman aral\u0131\u011f\u0131na g\u00f6re k\u0131rpabilirsiniz.<\/p>\n<pre><code class=\"language-redis\">XTRIM mystream MAXLEN ~ 1000 # Stream'i 1000 \u00f6\u011feyle s\u0131n\u0131rlay\u0131n\nXTRIM mystream MINID 1678886400000-0 # Belirli bir zaman damgas\u0131ndan \u00f6nceki \u00f6\u011feleri sil<\/code><\/pre>\n<p>Bu, eski verilerin otomatik olarak temizlenmesini sa\u011flayarak bir TTL benzeri davran\u0131\u015f sunar.<\/p>\n<h3>Sorted Sets ile TTL Benzetimi<\/h3>\n<p>S\u0131ral\u0131 k\u00fcmeler (Sorted Sets), \u00fcyeleri bir skorla ili\u015fkilendirerek s\u0131ral\u0131 bir \u015fekilde tutar. Bu \u00f6zelli\u011fi, \u00fcyelerin skorlar\u0131n\u0131 Unix zaman damgas\u0131 olarak ayarlayarak ve s\u00fcresi dolan \u00fcyeleri d\u00fczenli olarak temizleyerek bir TTL mekanizmas\u0131 benzetimi yapmak i\u00e7in kullanabilirsiniz.<\/p>\n<pre><code class=\"language-redis\">ZADD myevents 1678886460 \"event:1\" # 1678886460 Unix zaman\u0131nda s\u00fcresi dolacak bir olay\nZADD myevents 1678886500 \"event:2\"<\/code><\/pre>\n<p>Ard\u0131ndan, belirli aral\u0131klarla \u00e7al\u0131\u015fan bir arka plan g\u00f6revi ile s\u00fcresi dolan olaylar\u0131 temizleyebilirsiniz:<\/p>\n<pre><code class=\"language-redis\">ZREMRANGEBYSCORE myevents -inf (current_unix_timestamp)<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m, \u00f6zellikle s\u00fcresi dolan anahtarlar \u00fczerinde ek i\u015flemler yapmak istedi\u011finizde (\u00f6rne\u011fin, bir olay\u0131 tetiklemek) kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h2>Redis Keyspace Notifications<\/h2>\n<p>Redis Keyspace Notifications, Redis&#8217;in anahtarlar \u00fczerinde meydana gelen olaylar\u0131 (olu\u015fturma, g\u00fcncelleme, silme, s\u00fcre dolumu vb.) bir Pub\/Sub kanal\u0131 \u00fczerinden yay\u0131nlamas\u0131na olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir \u00f6zelliktir. Bu \u00f6zellik, s\u00fcresi dolan anahtarlar\u0131n tespiti ve bunlara tepki verilmesi i\u00e7in \u00f6zellikle kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>Yap\u0131land\u0131rma<\/h3>\n<p>Keyspace Notifications \u00f6zelli\u011fini etkinle\u015ftirmek i\u00e7in Redis yap\u0131land\u0131rma dosyas\u0131nda (redis.conf) veya <code>CONFIG SET<\/code> komutuyla <code>notify-keyspace-events<\/code> ayar\u0131n\u0131 yapman\u0131z gerekir.<\/p>\n<pre><code class=\"language-redis\">CONFIG SET notify-keyspace-events KEA<\/code><\/pre>\n<p>*   <code>K<\/code>: Keyspace olaylar\u0131 (keyname \u00f6n ekli)<br \/>\n*   <code>E<\/code>: Keyevent olaylar\u0131 (olay t\u00fcr\u00fc \u00f6n ekli)<br \/>\n*   <code>A<\/code>: T\u00fcm olaylar (K ve E dahil)<\/p>\n<p>En yayg\u0131n kullan\u0131m, hem keyspace hem de keyevent olaylar\u0131n\u0131 dinlemektir. \u00d6rne\u011fin, <code>KEA<\/code> t\u00fcm olaylar\u0131 etkinle\u015ftirir.<\/p>\n<h3>EXPIRED ve DEL Olaylar\u0131<\/h3>\n<p>Bir anahtar\u0131n s\u00fcresi doldu\u011funda, Redis iki t\u00fcr bildirim yay\u0131nlar:<br \/>\n1.  <strong>Keyspace bildirimi<\/strong>: <code>__keyspace@0__:mykey<\/code> kanal\u0131na <code>expired<\/code> mesaj\u0131 g\u00f6nderilir.<br \/>\n2.  <strong>Keyevent bildirimi<\/strong>: <code>__keyevent@0__:expired<\/code> kanal\u0131na <code>mykey<\/code> mesaj\u0131 g\u00f6nderilir.<\/p>\n<p>Bu bildirimleri bir Pub\/Sub istemcisi ile dinleyerek, s\u00fcresi dolan anahtarlara ger\u00e7ek zamanl\u0131 olarak tepki verebilirsiniz.<\/p>\n<pre><code class=\"language-redis\"># Keyspace kanal\u0131n\u0131 dinleme\nSUBSCRIBE __keyspace@0__:mykey\n\n<h2>Keyevent kanal\u0131n\u0131 dinleme<\/h2>\nSUBSCRIBE __keyevent@0__:expired<\/code><\/pre>\n<h3>Kullan\u0131m Alanlar\u0131<\/h3>\n<p>*   <strong>\u00d6nbellek Tutarl\u0131l\u0131\u011f\u0131<\/strong>: Bir anahtar\u0131n s\u00fcresi doldu\u011funda, ilgili verinin ba\u015fka bir sistemde (\u00f6rne\u011fin, bir veritaban\u0131nda) g\u00fcncellenmesi veya \u00f6nbelle\u011fin yeniden olu\u015fturulmas\u0131 i\u00e7in bir tetikleyici olarak kullan\u0131labilir.<br \/>\n*   <strong>Arka Plan G\u00f6revlerini Tetikleme<\/strong>: S\u00fcresi dolan bir oturum veya ge\u00e7ici bir veri, bir temizleme g\u00f6revinin veya ba\u015fka bir arka plan i\u015fleminin ba\u015flamas\u0131na neden olabilir.<br \/>\n*   <strong>Analiz ve \u0130zleme<\/strong>: S\u00fcresi dolan anahtarlar\u0131n hacmini ve t\u00fcr\u00fcn\u00fc izleyerek uygulaman\u0131z\u0131n davran\u0131\u015f\u0131 hakk\u0131nda i\u00e7g\u00f6r\u00fcler elde edebilirsiniz.<\/p>\n<p><strong>Performans Etkileri<\/strong>: Keyspace Notifications kullanmak, Redis sunucusunda ek CPU ve bellek y\u00fck\u00fc olu\u015fturabilir, \u00e7\u00fcnk\u00fc her olay i\u00e7in bir Pub\/Sub mesaj\u0131 olu\u015fturulur ve g\u00f6nderilir. Bu nedenle, yaln\u0131zca ihtiyac\u0131n\u0131z olan olaylar\u0131 etkinle\u015ftirmeniz ve performans \u00fczerindeki potansiyel etkilerini g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z \u00f6nemlidir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Redis&#8217;in anahtar s\u00fcresi (expiration) \u00f6zelli\u011fi, modern, performans odakl\u0131 ve bellek verimli uygulamalar geli\u015ftirmek i\u00e7in temel bir ara\u00e7t\u0131r. <code>EXPIRE<\/code>, <code>PEXPIRE<\/code>, <code>EXPIREAT<\/code>, <code>PEXPIREAT<\/code> gibi temel komutlar ve <code>TTL<\/code>, <code>PTTL<\/code>, <code>PERSIST<\/code> gibi yard\u0131mc\u0131 komutlar sayesinde, verilerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc hassas bir \u015fekilde y\u00f6netmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p>Bu makalede ele ald\u0131\u011f\u0131m\u0131z gibi, anahtar s\u00fcreleri \u00f6nbellekleme, oturum y\u00f6netimi, ge\u00e7ici veri depolama ve oran s\u0131n\u0131rlama gibi bir\u00e7ok yayg\u0131n senaryoda kritik rol oynar. Redis&#8217;in pasif ve aktif silme mekanizmalar\u0131, s\u00fcresi dolan anahtarlar\u0131n verimli bir \u015fekilde temizlenmesini sa\u011flarken, <code>maxmemory<\/code> ayar\u0131 ve \u00e7e\u015fitli \u00e7\u0131karma politikalar\u0131, bellek kullan\u0131m\u0131n\u0131 etkin bir \u015fekilde kontrol etmenize olanak tan\u0131r.<\/p>\n<p>Yar\u0131\u015f ko\u015fullar\u0131 ve TTL kayb\u0131 gibi potansiyel sorunlar\u0131n fark\u0131nda olmak ve bunlar\u0131 atomik <code>SET<\/code> komutlar\u0131 veya uygun TTL yenileme stratejileriyle \u00e7\u00f6zmek, uygulaman\u0131z\u0131n g\u00fcvenilirli\u011fini art\u0131racakt\u0131r. Ayr\u0131ca, Redis Keyspace Notifications gibi geli\u015fmi\u015f \u00f6zellikler, s\u00fcresi dolan anahtarlar \u00fczerinde ger\u00e7ek zamanl\u0131 tepkiler vererek uygulaman\u0131za daha fazla dinamizm katabilir.<\/p>\n<p>Redis&#8217;te anahtar s\u00fcresi y\u00f6netimini do\u011fru bir \u015fekilde anlamak ve uygulamak, hem uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131racak hem de sunucu kaynaklar\u0131n\u0131z\u0131n daha verimli kullan\u0131lmas\u0131n\u0131 sa\u011flayacakt\u0131r. Bu \u00f6zellik, Redis&#8217;i sadece bir \u00f6nbellek veya veri deposu olmaktan \u00e7\u0131kar\u0131p, dinamik veri ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini sa\u011flayan g\u00fc\u00e7l\u00fc bir platforma d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi\nGiri\u015f\nModern uygulama geli\u015ftirme d\u00fcnyas\u0131nda, veriye h\u0131zl\u0131 eri\u015fim ve etkin bellek","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1404],"tags":[],"class_list":{"0":"post-36030","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-redis","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Redis&#039;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Redis&#039;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi\" \/>\n<meta property=\"og:description\" content=\"Redis&#039;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi Giri\u015f Modern uygulama geli\u015ftirme d\u00fcnyas\u0131nda, veriye h\u0131zl\u0131 eri\u015fim ve etkin bellek\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-06T21:40:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi\",\"datePublished\":\"2025-12-06T21:40:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\"},\"wordCount\":3158,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Redis\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\",\"name\":\"Redis'te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-06T21:40:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Redis'te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Redis'te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi","og_description":"Redis'te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi Giri\u015f Modern uygulama geli\u015ftirme d\u00fcnyas\u0131nda, veriye h\u0131zl\u0131 eri\u015fim ve etkin bellek","og_url":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-06T21:40:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi","datePublished":"2025-12-06T21:40:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/"},"wordCount":3158,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Redis"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/","url":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/","name":"Redis'te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-06T21:40:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/rediste-anahtarlarin-suresini-belirleme-ve-etkin-yonetimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Redis&#8217;te Anahtarlar\u0131n S\u00fcresini Belirleme ve Etkin Y\u00f6netimi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36030"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36030\/revisions"}],"predecessor-version":[{"id":36031,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36030\/revisions\/36031"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}