{"id":16515,"date":"2026-09-13T21:52:48","date_gmt":"2026-09-13T18:52:48","guid":{"rendered":"https:\/\/www.ihs.com.tr\/blog\/?p=16515"},"modified":"2026-09-13T21:52:48","modified_gmt":"2026-09-13T18:52:48","slug":"redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani","status":"publish","type":"post","link":"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/","title":{"rendered":"Redis Kurulumu ve Yap\u0131land\u0131rmas\u0131: Y\u00fcksek H\u0131zl\u0131 Bellek \u0130\u00e7i Veritaban\u0131"},"content":{"rendered":"<p>Modern web uygulamalar\u0131n\u0131n h\u0131z ve performans beklentilerini kar\u015f\u0131lamak i\u00e7in tasarlanm\u0131\u015f olan Redis, a\u00e7\u0131k kaynak kodlu, y\u00fcksek performansl\u0131 bir bellek i\u00e7i (in-memory) veri yap\u0131s\u0131 deposudur. Genellikle veritaban\u0131, \u00f6nbellek ve mesajla\u015fma arac\u0131s\u0131 olarak kullan\u0131lan Redis, verileri disk yerine ana bellekte (RAM) tutarak milisaniyeler i\u00e7inde okuma ve yazma i\u015flemlerine olanak tan\u0131r. Bu \u00f6zelli\u011fi, onu \u00f6zellikle ger\u00e7ek zamanl\u0131 uygulamalar, anl\u0131k veri analizi, oturum y\u00f6netimi ve y\u00fcksek trafikli web siteleri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline getirir. Zengin veri tipi deste\u011fi ve esnek veri kal\u0131c\u0131l\u0131\u011f\u0131 mekanizmalar\u0131 ile Redis, geleneksel veritabanlar\u0131n\u0131n yava\u015f kald\u0131\u011f\u0131 senaryolarda geli\u015ftiricilere b\u00fcy\u00fck bir g\u00fc\u00e7 ve esneklik sunar.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_77 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0130\u00e7erik Tablosu<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6aa71adad55f7\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\" id=\"ez-toc-cssicon-toggle-item-6aa71adad55f7\" aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redise-Giris-ve-Temel-Kavramlar\" >Redis&#8217;e Giri\u015f ve Temel Kavramlar<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Nedir-Bellek-Ici-In-Memory-Veri-Yapisi-Deposu-Kavrami\" >Redis Nedir? Bellek \u0130\u00e7i (In-Memory) Veri Yap\u0131s\u0131 Deposu Kavram\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redisin-One-Cikan-Ozellikleri-ve-Avantajlari\" >Redis&#8217;in \u00d6ne \u00c7\u0131kan \u00d6zellikleri ve Avantajlar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redisin-Yaygin-Kullanim-Alanlari\" >Redis&#8217;in Yayg\u0131n Kullan\u0131m Alanlar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-ve-Diger-Veritabanlari-Arasindaki-Farklar\" >Redis ve Di\u011fer Veritabanlar\u0131 Aras\u0131ndaki Farklar<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Kurulum-Icin-Gerekli-Ortamin-Hazirlanmasi\" >Kurulum \u0130\u00e7in Gerekli Ortam\u0131n Haz\u0131rlanmas\u0131<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Desteklenen-Isletim-Sistemleri-Linux-macOS-Windows-icin-WSL\" >Desteklenen \u0130\u015fletim Sistemleri (Linux, macOS, Windows i\u00e7in WSL)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Sistem-Gereksinimleri-Bellek-ve-CPU-Onerileri\" >Sistem Gereksinimleri (Bellek ve CPU \u00d6nerileri)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Gerekli-Derleme-Araclarinin-Yuklenmesi-gcc-make-tcl\" >Gerekli Derleme Ara\u00e7lar\u0131n\u0131n Y\u00fcklenmesi (gcc, make, tcl)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Farkli-Platformlar-Icin-Adim-Adim-Redis-Kurulumu\" >Farkl\u0131 Platformlar \u0130\u00e7in Ad\u0131m Ad\u0131m Redis Kurulumu<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Linux-Dagitimlari-Uzerine-Kurulum\" >Linux Da\u011f\u0131t\u0131mlar\u0131 \u00dczerine Kurulum<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#macOS-Uzerine-Homebrew-ile-Kurulum\" >macOS \u00dczerine Homebrew ile Kurulum<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Windows-Uzerinde-WSL-Windows-Subsystem-for-Linux-ile-Kurulum\" >Windows \u00dczerinde WSL (Windows Subsystem for Linux) ile Kurulum<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Docker-Kullanarak-Konteyner-Olarak-Redis-Kurulumu\" >Docker Kullanarak Konteyner Olarak Redis Kurulumu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Ilk-Calistirma-ve-Temel-Yapilandirma\" >\u0130lk \u00c7al\u0131\u015ft\u0131rma ve Temel Yap\u0131land\u0131rma<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Sunucusunu-Baslatma-Durdurma-ve-Durumunu-Kontrol-Etme\" >Redis Sunucusunu Ba\u015flatma, Durdurma ve Durumunu Kontrol Etme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#redis-cli-Redis-Komut-Satiri-Arayuzu-Kullanimi\" >redis-cli: Redis Komut Sat\u0131r\u0131 Aray\u00fcz\u00fc Kullan\u0131m\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Kurulumun-Dogrulanmasi-PING-ve-ECHO-Komutlari\" >Kurulumun Do\u011frulanmas\u0131: PING ve ECHO Komutlar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Temel-Veri-Isleme-Komutlari-SET-GET-INCR-DEL\" >Temel Veri \u0130\u015fleme Komutlar\u0131: SET, GET, INCR, DEL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redisin-Sistem-Baslangicinda-Otomatik-Calisacak-Sekilde-Yapilandirilmasi-Systemd\" >Redis&#8217;in Sistem Ba\u015flang\u0131c\u0131nda Otomatik \u00c7al\u0131\u015facak \u015eekilde Yap\u0131land\u0131r\u0131lmas\u0131 (Systemd)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#redisconf-Dosyasi-ile-Detayli-Yapilandirma\" >`redis.conf` Dosyas\u0131 ile Detayl\u0131 Yap\u0131land\u0131rma<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Yapilandirma-Dosyasinin-Yeri-ve-Onemi\" >Yap\u0131land\u0131rma Dosyas\u0131n\u0131n Yeri ve \u00d6nemi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Ag-Ayarlari\" >A\u011f Ayarlar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Genel-Ayarlar\" >Genel Ayarlar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Bellek-Yonetimi\" >Bellek Y\u00f6netimi<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Veri-Kaliciligi-Persistence-Mekanizmalari\" >Veri Kal\u0131c\u0131l\u0131\u011f\u0131 (Persistence) Mekanizmalar\u0131<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#RDB-Redis-Database-ile-Anlik-Goruntu-Snapshotting\" >RDB (Redis Database) ile Anl\u0131k G\u00f6r\u00fcnt\u00fc (Snapshotting)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#AOF-Append-Only-File-ile-Gunlukleme\" >AOF (Append Only File) ile G\u00fcnl\u00fckleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#RDB-ve-AOFnin-Birlikte-Kullanimi-ve-En-Iyi-Pratikler\" >RDB ve AOF&#8217;nin Birlikte Kullan\u0131m\u0131 ve En \u0130yi Pratikler<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Guvenlik-Yapilandirmasi-ve-En-Iyi-Pratikler\" >Redis G\u00fcvenlik Yap\u0131land\u0131rmas\u0131 ve En \u0130yi Pratikler<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#requirepass-ile-Parola-Korumasi-Ekleme\" >`requirepass` ile Parola Korumas\u0131 Ekleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Tehlikeli-Komutlarin-Devre-Disi-Birakilmasi-veya-Yeniden-Adlandirilmasi-rename-command\" >Tehlikeli Komutlar\u0131n Devre D\u0131\u015f\u0131 B\u0131rak\u0131lmas\u0131 veya Yeniden Adland\u0131r\u0131lmas\u0131 (`rename-command`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Guvenli-Bir-Ag-Yapilandirmasi-ve-Guvenlik-Duvari-Kurallari\" >G\u00fcvenli Bir A\u011f Yap\u0131land\u0131rmas\u0131 ve G\u00fcvenlik Duvar\u0131 Kurallar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#SSLTLS-ile-Istemci-Sunucu-Iletisimini-Sifreleme\" >SSL\/TLS ile \u0130stemci-Sunucu \u0130leti\u015fimini \u015eifreleme<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Veri-Tipleri-ve-Kullanim-Senaryolari\" >Redis Veri Tipleri ve Kullan\u0131m Senaryolar\u0131<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Strings-Dizeler\" >Strings (Dizeler)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Lists-Listeler\" >Lists (Listeler)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Hashes-Karma-Haritalar\" >Hashes (Karma Haritalar)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Sets-Siralanmamis-Kumeler\" >Sets (S\u0131ralanmam\u0131\u015f K\u00fcmeler)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Sorted-Sets-Sirali-Kumeler\" >Sorted Sets (S\u0131ral\u0131 K\u00fcmeler)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Diger-Veri-Tipleri-Bitmaps-HyperLogLogs-Geospatial\" >Di\u011fer Veri Tipleri (Bitmaps, HyperLogLogs, Geospatial)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Yuksek-Erisilebilirlik-High-Availability-ve-Olceklendirme\" >Y\u00fcksek Eri\u015filebilirlik (High Availability) ve \u00d6l\u00e7eklendirme<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Replication-Master-Slave-Mimarisi\" >Redis Replication (Master-Slave Mimarisi)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Sentinel-ile-Otomatik-Yuk-Devretme-Automatic-Failover\" >Redis Sentinel ile Otomatik Y\u00fck Devretme (Automatic Failover)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Cluster-ile-Veri-Parcalama-ve-Yatay-Olceklendirme-Sharding\" >Redis Cluster ile Veri Par\u00e7alama ve Yatay \u00d6l\u00e7eklendirme (Sharding)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Sunucusunu-Izleme-Monitoring-ve-Bakim\" >Redis Sunucusunu \u0130zleme (Monitoring) ve Bak\u0131m<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#INFO-Komutu-ile-Detayli-Sunucu-Bilgileri-Alma\" >`INFO` Komutu ile Detayl\u0131 Sunucu Bilgileri Alma<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#MONITOR-Komutu-ile-Komutlari-Gercek-Zamanli-Izleme\" >`MONITOR` Komutu ile Komutlar\u0131 Ger\u00e7ek Zamanl\u0131 \u0130zleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#SLOWLOG-ile-Yavas-Calisan-Komutlari-Tespit-Etme\" >`SLOWLOG` ile Yava\u015f \u00c7al\u0131\u015fan Komutlar\u0131 Tespit Etme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Performans-Optimizasyonu-Icin-Ipuclari\" >Performans Optimizasyonu \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/www.ihs.com.tr\/blog\/redis-kurulumu-ve-yapilandirmasi-yuksek-hizli-bellek-ici-veritabani\/#Redis-Hosting-ve-Yonetimi-Icin-Neden-IHS-Telekomu-Tercih-Etmelisiniz\" >Redis Hosting ve Y\u00f6netimi \u0130\u00e7in Neden \u0130HS Telekom&#8217;u Tercih Etmelisiniz?<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Redise-Giris-ve-Temel-Kavramlar\"><\/span>Redis&#8217;e Giri\u015f ve Temel Kavramlar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis, &#8220;Remote Dictionary Server&#8221; ifadesinin k\u0131saltmas\u0131d\u0131r ve temel olarak bir anahtar-de\u011fer (key-value) deposu olarak \u00e7al\u0131\u015f\u0131r. Ancak onu di\u011fer anahtar-de\u011fer depolar\u0131ndan ay\u0131ran en \u00f6nemli \u00f6zelli\u011fi, sundu\u011fu zengin ve geli\u015fmi\u015f veri tipleridir. Bu b\u00f6l\u00fcmde Redis&#8217;in ne oldu\u011funu, temel kavramlar\u0131n\u0131, \u00f6ne \u00e7\u0131kan \u00f6zelliklerini ve yayg\u0131n kullan\u0131m alanlar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redis-Nedir-Bellek-Ici-In-Memory-Veri-Yapisi-Deposu-Kavrami\"><\/span>Redis Nedir? Bellek \u0130\u00e7i (In-Memory) Veri Yap\u0131s\u0131 Deposu Kavram\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis, verileri disk tabanl\u0131 geleneksel veritabanlar\u0131 gibi sabit disklerde (HDD\/SSD) de\u011fil, do\u011frudan sunucunun belle\u011finde (RAM) saklayan bir veri deposudur. &#8220;In-memory&#8221; yani &#8220;bellek i\u00e7i&#8221; \u00e7al\u0131\u015fma prensibi, verilere eri\u015fim s\u00fcresini dramatik \u00f6l\u00e7\u00fcde azalt\u0131r. Disk G\/\u00c7 (Giri\u015f\/\u00c7\u0131k\u0131\u015f) operasyonlar\u0131n\u0131n getirdi\u011fi gecikmeyi ortadan kald\u0131rarak, okuma ve yazma i\u015flemlerini mikrosaniye seviyelerine indirir. Bu, Redis&#8217;in neden inan\u0131lmaz derecede h\u0131zl\u0131 oldu\u011funu a\u00e7\u0131klayan temel mimari karard\u0131r. Sadece basit anahtar-de\u011fer \u00e7iftlerini de\u011fil, ayn\u0131 zamanda listeler, k\u00fcmeler, s\u0131ral\u0131 k\u00fcmeler ve karmalar gibi daha karma\u015f\u0131k veri yap\u0131lar\u0131n\u0131 da destekler. Bu sayede geli\u015ftiriciler, uygulama mant\u0131\u011f\u0131n\u0131 daha verimli bir \u015fekilde do\u011frudan veri katman\u0131nda i\u015fleyebilirler.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redisin-One-Cikan-Ozellikleri-ve-Avantajlari\"><\/span>Redis&#8217;in \u00d6ne \u00c7\u0131kan \u00d6zellikleri ve Avantajlar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;in pop\u00fclerli\u011finin arkas\u0131nda yatan bir\u00e7ok g\u00fc\u00e7l\u00fc \u00f6zellik bulunmaktad\u0131r. Bu \u00f6zellikler, onu \u00e7e\u015fitli uygulama senaryolar\u0131 i\u00e7in ideal bir \u00e7\u00f6z\u00fcm haline getirir.<\/p>\n<h4>Y\u00fcksek H\u0131z ve D\u00fc\u015f\u00fck Gecikme S\u00fcresi<\/h4>\n<p>Redis&#8217;in en bilinen avantaj\u0131 \u015f\u00fcphesiz h\u0131z\u0131d\u0131r. Verileri RAM&#8217;de tutmas\u0131 sayesinde saniyede milyonlarca i\u015flemi ger\u00e7ekle\u015ftirebilir. Bu, \u00f6zellikle anl\u0131k yan\u0131t verilmesi gereken, kullan\u0131c\u0131 deneyiminin kritik oldu\u011fu uygulamalarda (\u00f6rne\u011fin, e-ticaret sitelerindeki \u00fcr\u00fcn \u00f6nerileri, oyun lider tablolar\u0131) b\u00fcy\u00fck bir fark yarat\u0131r.<\/p>\n<h4>Zengin Veri Tipleri Deste\u011fi<\/h4>\n<p>Redis, basit dizelerden (strings) \u00e7ok daha fazlas\u0131n\u0131 sunar. Listeler, k\u00fcmeler (sets), s\u0131ral\u0131 k\u00fcmeler (sorted sets), karmalar (hashes), bit e\u015flemleri (bitmaps) ve co\u011frafi veriler (geospatial) gibi \u00e7e\u015fitli veri tiplerini atomik operasyonlarla destekler. Bu zengin veri tipi yelpazesi, karma\u015f\u0131k problemlerin daha az kodla ve daha verimli bir \u015fekilde \u00e7\u00f6z\u00fclmesini sa\u011flar.<\/p>\n<h4>Kal\u0131c\u0131l\u0131k (Persistence) Se\u00e7enekleri<\/h4>\n<p>Verileri bellekte tutmas\u0131, Redis&#8217;in dayan\u0131ks\u0131z oldu\u011fu anlam\u0131na gelmez. Redis, sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda veya bir \u00e7\u00f6kme durumunda verilerin kaybolmas\u0131n\u0131 \u00f6nlemek i\u00e7in iki farkl\u0131 kal\u0131c\u0131l\u0131k mekanizmas\u0131 sunar: RDB (Redis Database) ve AOF (Append Only File). RDB, belirli aral\u0131klarla veritaban\u0131n\u0131n anl\u0131k bir g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc diske kaydederken, AOF her yazma i\u015flemini bir log dosyas\u0131na ekler. Bu iki y\u00f6ntem, ihtiyaca g\u00f6re tek ba\u015flar\u0131na veya birlikte kullan\u0131labilir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redisin-Yaygin-Kullanim-Alanlari\"><\/span>Redis&#8217;in Yayg\u0131n Kullan\u0131m Alanlar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;in h\u0131z\u0131 ve esnekli\u011fi, onu bir\u00e7ok farkl\u0131 alanda pop\u00fcler bir tercih haline getirmi\u015ftir.<\/p>\n<h4>\u00d6nbellekleme (Caching)<\/h4>\n<p>En yayg\u0131n kullan\u0131m senaryosu, veritaban\u0131 sorgular\u0131n\u0131n, API \u00e7a\u011fr\u0131lar\u0131n\u0131n veya karma\u015f\u0131k hesaplamalar\u0131n sonu\u00e7lar\u0131n\u0131 \u00f6nbelle\u011fe almakt\u0131r. S\u0131k eri\u015filen verileri Redis&#8217;te tutarak, daha yava\u015f olan birincil veritaban\u0131na giden y\u00fck\u00fc azalt\u0131r, uygulama yan\u0131t s\u00fcrelerini iyile\u015ftirir ve genel sistem performans\u0131n\u0131 art\u0131r\u0131r. Bu, etkili bir <a href=\"https:\/\/www.ihs.com.tr\/blog\/cache-onbellek-nedir\/\" target=\"_blank\">\u00f6nbellek<\/a> mekanizmas\u0131d\u0131r.<\/p>\n<h4>Oturum Y\u00f6netimi (Session Store)<\/h4>\n<p>Web uygulamalar\u0131nda kullan\u0131c\u0131 oturum bilgilerini saklamak i\u00e7in Redis m\u00fckemmel bir \u00e7\u00f6z\u00fcmd\u00fcr. Yatay olarak \u00f6l\u00e7eklendirilmi\u015f (load balanced) sistemlerde, kullan\u0131c\u0131 talebi hangi sunucuya d\u00fc\u015ferse d\u00fc\u015fs\u00fcn, oturum verilerine h\u0131zl\u0131ca eri\u015filebilir. Bu, tutarl\u0131 ve kesintisiz bir kullan\u0131c\u0131 deneyimi sa\u011flar.<\/p>\n<h4>Ger\u00e7ek Zamanl\u0131 Analitik ve Saya\u00e7lar<\/h4>\n<p>Bir web sitesindeki anl\u0131k ziyaret\u00e7i say\u0131s\u0131n\u0131 takip etmek, bir sosyal medya g\u00f6nderisinin be\u011feni say\u0131s\u0131n\u0131 anl\u0131k olarak g\u00fcncellemek veya bir \u00fcr\u00fcn\u00fcn stok durumunu y\u00f6netmek gibi i\u015flemler i\u00e7in Redis&#8217;in atomik art\u0131rma\/azaltma (INCR\/DECR) komutlar\u0131 son derece verimlidir. Bu sayede ger\u00e7ek zamanl\u0131 saya\u00e7lar ve analitik verileri kolayca tutulabilir.<\/p>\n<h4>Mesajla\u015fma Kuyruklar\u0131 (Message Queues)<\/h4>\n<p>Redis&#8217;in liste veri tipi, temel mesajla\u015fma kuyruklar\u0131 olu\u015fturmak i\u00e7in kullan\u0131labilir. Bir i\u015flem (producer), yap\u0131lacak i\u015fleri bir listeye eklerken, ba\u015fka i\u015flemler (consumers) bu kuyruktan i\u015fleri al\u0131p i\u015fler. Bu, \u00f6zellikle uzun s\u00fcren veya kaynak yo\u011fun g\u00f6revleri uygulaman\u0131n ana ak\u0131\u015f\u0131ndan ay\u0131rmak i\u00e7in kullan\u0131lan bir y\u00f6ntemdir.<\/p>\n<h4>Lider Tablolar\u0131 (Leaderboards)<\/h4>\n<p>S\u0131ral\u0131 k\u00fcmeler (Sorted Sets) veri tipi, Redis&#8217;i oyunlar veya yar\u0131\u015fma uygulamalar\u0131 i\u00e7in ideal bir lider tablosu \u00e7\u00f6z\u00fcm\u00fc yapar. Her \u00fcyeye bir skor atan\u0131r ve Redis bu \u00fcyeleri otomatik olarak skora g\u00f6re s\u0131ral\u0131 tutar. Belirli bir kullan\u0131c\u0131n\u0131n s\u0131ralamas\u0131n\u0131 veya en y\u00fcksek skorlu kullan\u0131c\u0131lar\u0131 getirmek gibi i\u015flemler son derece h\u0131zl\u0131d\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redis-ve-Diger-Veritabanlari-Arasindaki-Farklar\"><\/span>Redis ve Di\u011fer Veritabanlar\u0131 Aras\u0131ndaki Farklar<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;i geleneksel ili\u015fkisel veritabanlar\u0131 (\u00f6rn. MySQL, PostgreSQL) veya di\u011fer NoSQL veritabanlar\u0131 (\u00f6rn. MongoDB, Cassandra) ile kar\u015f\u0131la\u015ft\u0131rmak, onun kendine \u00f6zg\u00fc yerini anlamam\u0131za yard\u0131mc\u0131 olur. Geleneksel veritabanlar\u0131 verileri diskte, yap\u0131land\u0131r\u0131lm\u0131\u015f tablolar halinde saklar ve karma\u015f\u0131k sorgular i\u00e7in tasarlanm\u0131\u015ft\u0131r. Redis ise h\u0131za odaklanm\u0131\u015f, daha basit veri yap\u0131lar\u0131n\u0131 bellekte tutan bir sistemdir. Veri tutarl\u0131l\u0131\u011f\u0131 ve karma\u015f\u0131k ili\u015fkiler yerine performans\u0131 \u00f6nceliklendirir. Bu nedenle, Redis genellikle tek ba\u015f\u0131na bir veritaban\u0131 olmak yerine, mevcut bir veritaban\u0131 sistemini desteklemek ve h\u0131zland\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Redis<\/th>\n<th>Geleneksel SQL Veritaban\u0131 (\u00f6rn. MySQL)<\/th>\n<th>Document NoSQL Veritaban\u0131 (\u00f6rn. MongoDB)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Veri Depolama<\/strong><\/td>\n<td>Bellek (RAM) \u00f6ncelikli<\/td>\n<td>Disk (HDD\/SSD) \u00f6ncelikli<\/td>\n<td>Disk (HDD\/SSD) \u00f6ncelikli<\/td>\n<\/tr>\n<tr>\n<td><strong>Performans<\/strong><\/td>\n<td>\u00c7ok Y\u00fcksek (D\u00fc\u015f\u00fck Gecikme)<\/td>\n<td>Orta\/Y\u00fcksek<\/td>\n<td>Y\u00fcksek<\/td>\n<\/tr>\n<tr>\n<td><strong>Veri Modeli<\/strong><\/td>\n<td>Anahtar-De\u011fer ve Geli\u015fmi\u015f Veri Yap\u0131lar\u0131<\/td>\n<td>\u0130li\u015fkisel (Tablolar, Sat\u0131rlar, S\u00fctunlar)<\/td>\n<td>D\u00f6k\u00fcman (JSON\/BSON)<\/td>\n<\/tr>\n<tr>\n<td><strong>Sorgulama<\/strong><\/td>\n<td>Basit komutlar ve anahtar bazl\u0131 eri\u015fim<\/td>\n<td>Karma\u015f\u0131k SQL sorgular\u0131, JOIN&#8217;ler<\/td>\n<td>Zengin d\u00f6k\u00fcman bazl\u0131 sorgulama<\/td>\n<\/tr>\n<tr>\n<td><strong>Temel Kullan\u0131m Alan\u0131<\/strong><\/td>\n<td>\u00d6nbellekleme, Oturum Y\u00f6netimi, Ger\u00e7ek Zamanl\u0131 Uygulamalar<\/td>\n<td>Yap\u0131land\u0131r\u0131lm\u0131\u015f veriler, Finansal sistemler, ERP<\/td>\n<td>\u0130\u00e7erik y\u00f6netimi, Mobil uygulamalar, Kataloglar<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Kurulum-Icin-Gerekli-Ortamin-Hazirlanmasi\"><\/span>Kurulum \u0130\u00e7in Gerekli Ortam\u0131n Haz\u0131rlanmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis kurulumuna ge\u00e7meden \u00f6nce, \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131 sistemin do\u011fru \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan ve gerekli t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n y\u00fcklendi\u011finden emin olmak \u00f6nemlidir. Bu haz\u0131rl\u0131k a\u015famas\u0131, kurulum s\u00fcrecinin sorunsuz ve ba\u015far\u0131l\u0131 olmas\u0131n\u0131 sa\u011flayacakt\u0131r. Redis, esnek bir yap\u0131ya sahip olmas\u0131na ra\u011fmen, en iyi performans\u0131 belirli ortamlarda sunar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Desteklenen-Isletim-Sistemleri-Linux-macOS-Windows-icin-WSL\"><\/span>Desteklenen \u0130\u015fletim Sistemleri (Linux, macOS, Windows i\u00e7in WSL)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis, resmi olarak POSIX uyumlu sistemler i\u00e7in geli\u015ftirilmi\u015f ve test edilmi\u015ftir. Bu nedenle en kararl\u0131 ve performansl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131 ortamlar Linux da\u011f\u0131t\u0131mlar\u0131d\u0131r.<\/p>\n<ul>\n<li><b>Linux:<\/b> Ubuntu, Debian, CentOS, Red Hat Enterprise Linux (RHEL) ve di\u011fer bir\u00e7ok pop\u00fcler da\u011f\u0131t\u0131m Redis&#8217;i sorunsuz bir \u015fekilde destekler. \u00dcretim ortamlar\u0131 (production) i\u00e7in kesinlikle \u00f6nerilen platform Linux&#8217;tur.<\/li>\n<li><b>macOS:<\/b> Geli\u015ftirme ortamlar\u0131 i\u00e7in macOS de iyi bir se\u00e7enektir. Genellikle Homebrew paket y\u00f6neticisi kullan\u0131larak kolayca kurulabilir.<\/li>\n<li><b>Windows:<\/b> Redis&#8217;in Windows i\u00e7in resmi bir s\u00fcr\u00fcm\u00fc bulunmamaktad\u0131r. Ancak Microsoft, Windows 10 ve 11&#8217;de WSL (Windows Subsystem for Linux) ad\u0131 verilen bir uyumluluk katman\u0131 sunar. WSL sayesinde, Windows \u00fczerinde tam bir Linux da\u011f\u0131t\u0131m\u0131 (\u00f6rne\u011fin Ubuntu) \u00e7al\u0131\u015ft\u0131rabilir ve Redis&#8217;i bu sanal ortamda yerel olarak kurabilirsiniz. Bu, Windows&#8217;ta geli\u015ftirme yapanlar i\u00e7in en pratik ve \u00f6nerilen y\u00f6ntemdir.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Sistem-Gereksinimleri-Bellek-ve-CPU-Onerileri\"><\/span>Sistem Gereksinimleri (Bellek ve CPU \u00d6nerileri)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;in sistem gereksinimleri, kullan\u0131m amac\u0131na ve depolanacak veri miktar\u0131na g\u00f6re b\u00fcy\u00fck \u00f6l\u00e7\u00fcde de\u011fi\u015fiklik g\u00f6sterir.<\/p>\n<ul>\n<li><b>Bellek (RAM):<\/b> Redis bir bellek i\u00e7i veritaban\u0131 oldu\u011fundan, en kritik kaynak RAM&#8217;dir. Gerekli bellek miktar\u0131, saklamay\u0131 planlad\u0131\u011f\u0131n\u0131z toplam veri boyutuna ba\u011fl\u0131d\u0131r. Ayr\u0131ca, Redis&#8217;in anl\u0131k g\u00f6r\u00fcnt\u00fc (snapshot) olu\u015fturma gibi i\u015flemleri i\u00e7in ek belle\u011fe ihtiya\u00e7 duyabilece\u011fini unutmay\u0131n. Genel bir kural olarak, depolayaca\u011f\u0131n\u0131z verinin en az iki kat\u0131 kadar RAM&#8217;e sahip olmak iyi bir ba\u015flang\u0131\u00e7t\u0131r.<\/li>\n<li><b>CPU:<\/b> Redis b\u00fcy\u00fck \u00f6l\u00e7\u00fcde tek i\u015f par\u00e7ac\u0131kl\u0131 (single-threaded) bir yap\u0131ya sahiptir. Bu, ayn\u0131 anda birden fazla \u00e7ekirde\u011fi komutlar\u0131 i\u015flemek i\u00e7in kullanmad\u0131\u011f\u0131 anlam\u0131na gelir. Bu nedenle, \u00e7ok say\u0131da \u00e7ekirdekten ziyade, y\u00fcksek saat h\u0131z\u0131na sahip g\u00fc\u00e7l\u00fc tek bir \u00e7ekirdek performans\u0131 daha \u00f6nemlidir. Modern bir CPU, \u00e7o\u011fu senaryo i\u00e7in fazlas\u0131yla yeterli olacakt\u0131r.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Gerekli-Derleme-Araclarinin-Yuklenmesi-gcc-make-tcl\"><\/span>Gerekli Derleme Ara\u00e7lar\u0131n\u0131n Y\u00fcklenmesi (gcc, make, tcl)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;i paket y\u00f6neticileri yerine do\u011frudan kaynak kodundan derleyerek kurmay\u0131 planl\u0131yorsan\u0131z, sisteminizde baz\u0131 temel geli\u015ftirme ara\u00e7lar\u0131n\u0131n y\u00fckl\u00fc olmas\u0131 gerekir. Paket y\u00f6neticisi ile yap\u0131lan kurulumlarda bu ba\u011f\u0131ml\u0131l\u0131klar genellikle otomatik olarak y\u00fcklenir.<\/p>\n<ul>\n<li><b>gcc\/cc:<\/b> C derleyicisidir. Redis, C programlama dilinde yaz\u0131lm\u0131\u015ft\u0131r ve kaynak kodunun makine diline \u00e7evrilmesi i\u00e7in bir derleyiciye ihtiya\u00e7 duyar.<\/li>\n<li><b>make:<\/b> Derleme s\u00fcrecini otomatikle\u015ftiren bir ara\u00e7t\u0131r. `Makefile` dosyas\u0131ndaki talimatlar\u0131 okuyarak derleme i\u015flemini y\u00f6netir.<\/li>\n<li><b>tcl:<\/b> Redis&#8217;in test paketini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereklidir. Kurulumdan sonra her \u015feyin do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in `make test` komutunu kullanmak isterseniz, `tcl`&#8217;nin y\u00fckl\u00fc olmas\u0131 gerekir.<\/li>\n<\/ul>\n<p>Bu ara\u00e7lar\u0131 Debian\/Ubuntu tabanl\u0131 sistemlerde `sudo apt-get install build-essential tcl` komutuyla, CentOS\/RHEL tabanl\u0131 sistemlerde ise `sudo yum groupinstall &#8220;Development Tools&#8221;` ve `sudo yum install tcl` komutlar\u0131yla y\u00fckleyebilirsiniz.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Farkli-Platformlar-Icin-Adim-Adim-Redis-Kurulumu\"><\/span>Farkl\u0131 Platformlar \u0130\u00e7in Ad\u0131m Ad\u0131m Redis Kurulumu<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis&#8217;i farkl\u0131 i\u015fletim sistemlerine kurman\u0131n birden fazla yolu vard\u0131r. Bu b\u00f6l\u00fcmde, en yayg\u0131n platformlar olan Linux, macOS, Windows (WSL ile) ve Docker i\u00e7in ad\u0131m ad\u0131m kurulum talimatlar\u0131n\u0131 bulacaks\u0131n\u0131z. \u0130htiya\u00e7lar\u0131n\u0131za en uygun y\u00f6ntemi se\u00e7erek kurulumu kolayca tamamlayabilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Linux-Dagitimlari-Uzerine-Kurulum\"><\/span>Linux Da\u011f\u0131t\u0131mlar\u0131 \u00dczerine Kurulum<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Linux, Redis i\u00e7in en ideal ve en \u00e7ok tercih edilen platformdur. Kurulum, da\u011f\u0131t\u0131m\u0131n\u0131z\u0131n paket y\u00f6neticisi kullan\u0131larak veya do\u011frudan kaynak koddan derlenerek yap\u0131labilir.<\/p>\n<h4>Ubuntu\/Debian i\u00e7in Paket Y\u00f6neticisi (apt) ile Kurulum<\/h4>\n<p>Ubuntu ve Debian tabanl\u0131 sistemlerde `apt` paket y\u00f6neticisini kullanmak en basit y\u00f6ntemdir.<\/p>\n<ol>\n<li><b>Paket listesini g\u00fcncelleyin:<\/b><br \/><code>sudo apt update<\/code><\/li>\n<li><b>Redis sunucusunu y\u00fckleyin:<\/b><br \/><code>sudo apt install redis-server<\/code><\/li>\n<li><b>Kurulumu do\u011frulay\u0131n:<\/b> Redis servisi genellikle kurulumdan sonra otomatik olarak ba\u015flar. Durumunu kontrol etmek i\u00e7in:<br \/><code>sudo systemctl status redis-server<\/code><\/li>\n<\/ol>\n<h4>CentOS\/RHEL i\u00e7in Paket Y\u00f6neticisi (yum\/dnf) ile Kurulum<\/h4>\n<p>CentOS, RHEL ve Fedora gibi da\u011f\u0131t\u0131mlarda `yum` veya `dnf` paket y\u00f6neticisi kullan\u0131l\u0131r. Bu da\u011f\u0131t\u0131mlar\u0131n standart depolar\u0131ndaki Redis s\u00fcr\u00fcm\u00fc eski olabilir, bu nedenle genellikle EPEL (Extra Packages for Enterprise Linux) veya Remi deposu gibi ek depolar\u0131n etkinle\u015ftirilmesi \u00f6nerilir.<\/p>\n<ol>\n<li><b>EPEL deposunu y\u00fckleyin (CentOS 7 i\u00e7in):<\/b><br \/><code>sudo yum install epel-release<\/code><\/li>\n<li><b>Remi deposunu etkinle\u015ftirin (iste\u011fe ba\u011fl\u0131, daha g\u00fcncel s\u00fcr\u00fcm i\u00e7in):<\/b><br \/><code>sudo yum install http:\/\/rpms.remirepo.net\/enterprise\/remi-release-7.rpm<\/code><br \/><code>sudo yum-config-manager --enable remi<\/code><\/li>\n<li><b>Redis&#8217;i y\u00fckleyin:<\/b><br \/><code>sudo yum install redis<\/code><\/li>\n<li><b>Redis servisini ba\u015flat\u0131n ve etkinle\u015ftirin:<\/b><br \/><code>sudo systemctl start redis<\/code><br \/><code>sudo systemctl enable redis<\/code><\/li>\n<\/ol>\n<h4>Kaynak Koddan Derleyerek Kurulum<\/h4>\n<p>Her zaman en son Redis s\u00fcr\u00fcm\u00fcn\u00fc kullanmak veya \u00f6zel derleme se\u00e7enekleri belirtmek istiyorsan\u0131z, kaynak koddan kurulum en esnek y\u00f6ntemdir.<\/p>\n<ol>\n<li><b>Gerekli derleme ara\u00e7lar\u0131n\u0131 y\u00fckleyin:<\/b><br \/><code>sudo apt update && sudo apt install build-essential tcl<\/code> (Debian\/Ubuntu i\u00e7in)<br \/><code>sudo yum groupinstall \"Development Tools\" && sudo yum install tcl<\/code> (CentOS\/RHEL i\u00e7in)<\/li>\n<li><b>En son kararl\u0131 Redis s\u00fcr\u00fcm\u00fcn\u00fc indirin:<\/b> Redis&#8217;in resmi indirme sayfas\u0131ndan en son `tar.gz` dosyas\u0131n\u0131n ba\u011flant\u0131s\u0131n\u0131 kopyalay\u0131n.<br \/><code>wget http:\/\/download.redis.io\/redis-stable.tar.gz<\/code><\/li>\n<li><b>Ar\u015fivi a\u00e7\u0131n ve dizine girin:<\/b><br \/><code>tar xvzf redis-stable.tar.gz<\/code><br \/><code>cd redis-stable<\/code><\/li>\n<li><b>Derleyin ve kurun:<\/b><br \/><code>make<\/code><br \/><code>make test<\/code> (\u0130ste\u011fe ba\u011fl\u0131, kurulumu test eder)<br \/><code>sudo make install<\/code><\/li>\n<li>Bu y\u00f6ntem Redis dosyalar\u0131n\u0131 `\/usr\/local\/bin` dizinine kopyalar. Servis olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in ek yap\u0131land\u0131rma ad\u0131mlar\u0131 gereklidir.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"macOS-Uzerine-Homebrew-ile-Kurulum\"><\/span>macOS \u00dczerine Homebrew ile Kurulum<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>macOS kullan\u0131c\u0131lar\u0131 i\u00e7in en pop\u00fcler ve kolay y\u00f6ntem <a href=\"https:\/\/www.ihs.com.tr\/blog\/ucretsiz-open-source-blog-yazilimlari\/\" target=\"_blank\">a\u00e7\u0131k kaynakl\u0131<\/a> paket y\u00f6neticisi olan Homebrew&#8217;u kullanmakt\u0131r.<\/p>\n<ol>\n<li><b>Homebrew y\u00fckl\u00fc de\u011filse, y\u00fckleyin:<\/b> Talimatlar\u0131 resmi Homebrew sitesinden (brew.sh) alabilirsiniz.<\/li>\n<li><b>Redis&#8217;i y\u00fckleyin:<\/b><br \/><code>brew install redis<\/code><\/li>\n<li><b>Redis&#8217;i bir servis olarak ba\u015flatmak i\u00e7in:<\/b><br \/><code>brew services start redis<\/code><\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Windows-Uzerinde-WSL-Windows-Subsystem-for-Linux-ile-Kurulum\"><\/span>Windows \u00dczerinde WSL (Windows Subsystem for Linux) ile Kurulum<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Windows&#8217;ta Redis \u00e7al\u0131\u015ft\u0131rman\u0131n en modern ve desteklenen yolu WSL kullanmakt\u0131r. WSL, Windows i\u00e7inde bir Linux ortam\u0131 sa\u011flar.<\/p>\n<ol>\n<li><b>WSL&#8217;yi etkinle\u015ftirin:<\/b> PowerShell&#8217;i y\u00f6netici olarak a\u00e7\u0131n ve `wsl &#8211;install` komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. Bu komut, varsay\u0131lan olarak Ubuntu da\u011f\u0131t\u0131m\u0131n\u0131 y\u00fckleyecektir.<\/li>\n<li><b>Ubuntu terminalini ba\u015flat\u0131n:<\/b> Ba\u015flat men\u00fcs\u00fcnden &#8220;Ubuntu&#8221;yu arat\u0131p \u00e7al\u0131\u015ft\u0131r\u0131n. \u0130lk a\u00e7\u0131l\u0131\u015fta bir kullan\u0131c\u0131 ad\u0131 ve parola belirlemeniz istenecektir.<\/li>\n<li><b>Redis&#8217;i kurun:<\/b> Art\u0131k tam bir Ubuntu ortam\u0131ndas\u0131n\u0131z. Yukar\u0131daki &#8220;Ubuntu\/Debian i\u00e7in Paket Y\u00f6neticisi (apt) ile Kurulum&#8221; b\u00f6l\u00fcm\u00fcndeki ad\u0131mlar\u0131 izleyin:<br \/><code>sudo apt update<\/code><br \/><code>sudo apt install redis-server<\/code><\/li>\n<li><b>Redis sunucusunu ba\u015flat\u0131n:<\/b><br \/><code>sudo service redis-server start<\/code><\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Docker-Kullanarak-Konteyner-Olarak-Redis-Kurulumu\"><\/span>Docker Kullanarak Konteyner Olarak Redis Kurulumu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.ihs.com.tr\/blog\/docker-nedir-ve-sunucu-yonetimini-nasil-kolaylastirir\/\" target=\"_blank\">Docker<\/a>, uygulamalar\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 konteyner ad\u0131 verilen yal\u0131t\u0131lm\u0131\u015f ortamlarda \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Bu y\u00f6ntem, platformdan ba\u011f\u0131ms\u0131z, tekrarlanabilir ve h\u0131zl\u0131 bir kurulum sa\u011flar.<\/p>\n<ol>\n<li><b>Docker&#8217;\u0131n sisteminizde y\u00fckl\u00fc oldu\u011fundan emin olun.<\/b><\/li>\n<li><b>Resmi Redis imaj\u0131n\u0131 Docker Hub&#8217;dan \u00e7ekin:<\/b><br \/><code>docker pull redis<\/code><\/li>\n<li><b>Redis konteynerini ba\u015flat\u0131n:<\/b><br \/><code>docker run --name my-redis-container -p 6379:6379 -d redis<\/code><\/li>\n<li>Bu komut, `my-redis-container` ad\u0131nda bir konteyner olu\u015fturur, Redis&#8217;in varsay\u0131lan portu olan 6379&#8217;u ana makinenizin 6379 portuna ba\u011flar ve `-d` parametresi ile arka planda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Art\u0131k Redis&#8217;e `localhost:6379` \u00fczerinden eri\u015febilirsiniz.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Ilk-Calistirma-ve-Temel-Yapilandirma\"><\/span>\u0130lk \u00c7al\u0131\u015ft\u0131rma ve Temel Yap\u0131land\u0131rma<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis sunucusunu ba\u015far\u0131yla kurduktan sonraki ad\u0131m, onu nas\u0131l y\u00f6netece\u011finizi, \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 nas\u0131l do\u011frulayaca\u011f\u0131n\u0131z\u0131 ve temel komutlar\u0131 nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenmektir. Bu b\u00f6l\u00fcm, Redis ile ilk etkile\u015fimlerinizi ve temel yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 kapsar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redis-Sunucusunu-Baslatma-Durdurma-ve-Durumunu-Kontrol-Etme\"><\/span>Redis Sunucusunu Ba\u015flatma, Durdurma ve Durumunu Kontrol Etme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Paket y\u00f6neticisi ile kurulum yapt\u0131ysan\u0131z, Redis genellikle bir sistem servisi olarak yap\u0131land\u0131r\u0131l\u0131r. Bu servisleri y\u00f6netmek i\u00e7in `systemctl` komutu kullan\u0131l\u0131r (\u00e7o\u011fu modern Linux da\u011f\u0131t\u0131m\u0131nda).<\/p>\n<ul>\n<li><b>Sunucuyu Ba\u015flatma:<\/b><br \/><code>sudo systemctl start redis-server<\/code><\/li>\n<li><b>Sunucuyu Durdurma:<\/b><br \/><code>sudo systemctl stop redis-server<\/code><\/li>\n<li><b>Sunucuyu Yeniden Ba\u015flatma:<\/b><br \/><code>sudo systemctl restart redis-server<\/code><\/li>\n<li><b>Sunucunun Durumunu Kontrol Etme:<\/b><br \/><code>sudo systemctl status redis-server<\/code><br \/>Bu komut, servisin aktif olup olmad\u0131\u011f\u0131n\u0131, ne kadar s\u00fcredir \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve son log mesajlar\u0131n\u0131 g\u00f6sterir.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"redis-cli-Redis-Komut-Satiri-Arayuzu-Kullanimi\"><\/span>redis-cli: Redis Komut Sat\u0131r\u0131 Aray\u00fcz\u00fc Kullan\u0131m\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>redis-cli<\/code> (Command Line Interface), Redis sunucusuyla etkile\u015fim kurmak i\u00e7in kullan\u0131lan temel ara\u00e7t\u0131r. Bu aray\u00fcz \u00fczerinden sunucuya komutlar g\u00f6nderip yan\u0131tlar\u0131n\u0131 alabilirsiniz.<\/p>\n<p>Komut sat\u0131r\u0131na sadece `redis-cli` yazarak aray\u00fcz\u00fc ba\u015flatabilirsiniz:<\/p>\n<p><code><br \/>\n$ redis-cli<br \/>\n127.0.0.1:6379><br \/>\n<\/code><\/p>\n<p>Bu, varsay\u0131lan olarak yerel makinede (`127.0.0.1`) ve varsay\u0131lan portta (`6379`) \u00e7al\u0131\u015fan Redis sunucusuna ba\u011fland\u0131\u011f\u0131n\u0131z\u0131 g\u00f6sterir. Art\u0131k komutlar\u0131n\u0131z\u0131 bu ekrana yazabilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kurulumun-Dogrulanmasi-PING-ve-ECHO-Komutlari\"><\/span>Kurulumun Do\u011frulanmas\u0131: PING ve ECHO Komutlar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sunucu ile ba\u011flant\u0131n\u0131n ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 test etmenin en kolay yolu `PING` komutunu kullanmakt\u0131r. Sunucu d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131yorsa, `PONG` yan\u0131t\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<br \/>\n<code><br \/>\n127.0.0.1:6379> PING<br \/>\nPONG<br \/>\n<\/code><\/p>\n<p>`ECHO` komutu ise kendisine verilen mesaj\u0131 geri d\u00f6nd\u00fcr\u00fcr. Bu da ba\u011flant\u0131y\u0131 ve komut i\u015fleme yetene\u011fini test etmek i\u00e7in kullan\u0131labilir.<\/p>\n<p><code><br \/>\n127.0.0.1:6379> ECHO \"Merhaba Redis\"<br \/>\n\"Merhaba Redis\"<br \/>\n<\/code><\/p>\n<p>Bu komutlardan beklenen yan\u0131tlar\u0131 al\u0131yorsan\u0131z, Redis kurulumunuz ba\u015far\u0131l\u0131 ve sunucunuz \u00e7al\u0131\u015f\u0131r durumdad\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Temel-Veri-Isleme-Komutlari-SET-GET-INCR-DEL\"><\/span>Temel Veri \u0130\u015fleme Komutlar\u0131: SET, GET, INCR, DEL<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis ile \u00e7al\u0131\u015fmaya ba\u015flamak i\u00e7in birka\u00e7 temel anahtar-de\u011fer komutunu \u00f6\u011frenmek yeterlidir:<\/p>\n<ul>\n<li><b>SET:<\/b> Bir anahtara bir de\u011fer atamak i\u00e7in kullan\u0131l\u0131r. E\u011fer anahtar zaten mevcutsa, de\u011feri g\u00fcncellenir.<br \/><code>127.0.0.1:6379> SET kullanici:1:isim \"Ahmet\"<\/code><br \/><code>OK<\/code><\/li>\n<li><b>GET:<\/b> Belirtilen anahtar\u0131n de\u011ferini getirmek i\u00e7in kullan\u0131l\u0131r.<br \/><code>127.0.0.1:6379> GET kullanici:1:isim<\/code><br \/><code>\"Ahmet\"<\/code><\/li>\n<li><b>INCR:<\/b> De\u011feri bir tamsay\u0131 olan bir anahtar\u0131n de\u011ferini bir art\u0131r\u0131r. Saya\u00e7lar i\u00e7in idealdir.<br \/><code>127.0.0.1:6379> SET sayac 100<\/code><br \/><code>OK<\/code><br \/><code>127.0.0.1:6379> INCR sayac<\/code><br \/><code>(integer) 101<\/code><\/li>\n<li><b>DEL:<\/b> Bir veya daha fazla anahtar\u0131 ve onlara ait de\u011ferleri siler.<br \/><code>127.0.0.1:6379> DEL kullanici:1:isim<\/code><br \/><code>(integer) 1<\/code> (1, silinen anahtar say\u0131s\u0131n\u0131 belirtir)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Redisin-Sistem-Baslangicinda-Otomatik-Calisacak-Sekilde-Yapilandirilmasi-Systemd\"><\/span>Redis&#8217;in Sistem Ba\u015flang\u0131c\u0131nda Otomatik \u00c7al\u0131\u015facak \u015eekilde Yap\u0131land\u0131r\u0131lmas\u0131 (Systemd)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sunucunuz yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda Redis&#8217;in otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flamak, \u00fcretim ortamlar\u0131 i\u00e7in kritik bir ad\u0131md\u0131r. `systemctl` kullanan sistemlerde bu i\u015flem olduk\u00e7a basittir.<\/p>\n<p>Servisi etkinle\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<p><code>sudo systemctl enable redis-server<\/code><\/p>\n<p>Bu komut, sistem ba\u015flang\u0131c\u0131nda Redis servisini ba\u015flatmak i\u00e7in gerekli sembolik linkleri olu\u015fturur. Servisi devre d\u0131\u015f\u0131 b\u0131rakmak isterseniz `disable` komutunu kullanabilirsiniz.<\/p>\n<p><code>sudo systemctl disable redis-server<\/code>\n<\/p>\n<h2><span class=\"ez-toc-section\" id=\"redisconf-Dosyasi-ile-Detayli-Yapilandirma\"><\/span>`redis.conf` Dosyas\u0131 ile Detayl\u0131 Yap\u0131land\u0131rma<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis sunucusunun davran\u0131\u015f\u0131n\u0131 kontrol eden t\u00fcm ayarlar, `redis.conf` adl\u0131 bir yap\u0131land\u0131rma dosyas\u0131nda saklan\u0131r. Bu dosya, Redis&#8217;in a\u011f ayarlar\u0131ndan bellek y\u00f6netimine, veri kal\u0131c\u0131l\u0131\u011f\u0131ndan g\u00fcvenlik politikalar\u0131na kadar her y\u00f6n\u00fcn\u00fc \u00f6zelle\u015ftirmenize olanak tan\u0131r. Kurulumunuzu optimize etmek ve g\u00fcvenli hale getirmek i\u00e7in bu dosyadaki temel direktifleri anlamak \u00f6nemlidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yapilandirma-Dosyasinin-Yeri-ve-Onemi\"><\/span>Yap\u0131land\u0131rma Dosyas\u0131n\u0131n Yeri ve \u00d6nemi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`redis.conf` dosyas\u0131n\u0131n konumu, kurulum y\u00f6ntemine g\u00f6re de\u011fi\u015fir. Paket y\u00f6neticisi ile yap\u0131lan standart bir Linux kurulumunda genellikle `\/etc\/redis\/redis.conf` yolunda bulunur. Kaynak koddan derleme yap\u0131ld\u0131ysa, derleme dizininde \u00f6rnek bir `redis.conf` dosyas\u0131 olu\u015fturulur.<br \/>\nBu dosyadaki de\u011fi\u015fikliklerin ge\u00e7erli olmas\u0131 i\u00e7in Redis sunucusunun yeniden ba\u015flat\u0131lmas\u0131 gerekir. De\u011fi\u015fiklik yapmadan \u00f6nce orijinal dosyan\u0131n bir yede\u011fini olu\u015fturmak her zaman iyi bir pratiktir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ag-Ayarlari\"><\/span>A\u011f Ayarlar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bu ayarlar, Redis sunucusunun a\u011f \u00fczerinde nas\u0131l davranaca\u011f\u0131n\u0131 ve kimlerin ba\u011flanabilece\u011fini belirler.<\/p>\n<h4>bind: Ba\u011flan\u0131lacak IP Adresini Belirleme<\/h4>\n<p>Varsay\u0131lan olarak Redis, sadece yerel makineden (localhost) gelen ba\u011flant\u0131lar\u0131 kabul eder (`bind 127.0.0.1 ::1`). Bu, g\u00fcvenlik i\u00e7in iyi bir ba\u015flang\u0131\u00e7t\u0131r. E\u011fer Redis sunucusuna ba\u015fka makinelerden eri\u015filmesi gerekiyorsa, bu sat\u0131r\u0131 sunucunun yerel a\u011fdaki IP adresi ile de\u011fi\u015ftirmeniz gerekir (\u00f6rne\u011fin, `bind 192.168.1.100 127.0.0.1`). T\u00fcm a\u011f aray\u00fczlerinden gelen ba\u011flant\u0131lar\u0131 dinlemek i\u00e7in `bind 0.0.0.0` kullanabilirsiniz, ancak bu, g\u00fcvenlik duvar\u0131 kurallar\u0131 ve parola korumas\u0131 olmadan kesinlikle \u00f6nerilmez.<\/p>\n<h4>port: Sunucunun \u00c7al\u0131\u015faca\u011f\u0131 Portu Ayarlama<\/h4>\n<p>Redis&#8217;in varsay\u0131lan olarak dinledi\u011fi port 6379&#8217;dur. G\u00fcvenlik nedeniyle veya ayn\u0131 makinede birden fazla Redis \u00f6rne\u011fi \u00e7al\u0131\u015ft\u0131rmak isterseniz bu portu de\u011fi\u015ftirebilirsiniz. \u00d6rne\u011fin: `port 6380`.<\/p>\n<h4>protected-mode: Korumal\u0131 Modun Yap\u0131land\u0131r\u0131lmas\u0131<\/h4>\n<p>`protected-mode` varsay\u0131lan olarak `yes` (evet) de\u011ferine ayarlanm\u0131\u015ft\u0131r. Bu mod aktifken, Redis sadece `bind` direktifi ile belirtilen IP adreslerinden gelen ba\u011flant\u0131lar\u0131 kabul eder. E\u011fer `bind` ayar\u0131 yap\u0131lmam\u0131\u015fsa ve parola (`requirepass`) tan\u0131mlanmam\u0131\u015fsa, Redis d\u0131\u015f a\u011fdan gelen ba\u011flant\u0131lara kendini tamamen kapat\u0131r. Bu, internete a\u00e7\u0131k, yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f Redis sunucular\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in \u00f6nemli bir \u00f6zelliktir. \u00dcretim ortamlar\u0131nda `protected-mode yes` ayar\u0131n\u0131 korumak \u015fiddetle tavsiye edilir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Genel-Ayarlar\"><\/span>Genel Ayarlar<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bu ayarlar, Redis&#8217;in \u00e7al\u0131\u015fma \u015fekli ve loglama gibi genel davran\u0131\u015flar\u0131n\u0131 kontrol eder.<\/p>\n<h4>daemonize: Arka Planda \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Bu ayar `yes` olarak de\u011fi\u015ftirildi\u011finde, Redis sunucusu bir &#8220;daemon&#8221; olarak, yani arka planda \u00e7al\u0131\u015f\u0131r ve terminal oturumu kapat\u0131lsa bile \u00e7al\u0131\u015fmaya devam eder. Paket y\u00f6neticileriyle yap\u0131lan kurulumlarda servis dosyalar\u0131 bu i\u015flevi zaten yerine getirdi\u011fi i\u00e7in genellikle bu ayara dokunulmaz. Ancak Redis&#8217;i manuel olarak ba\u015flat\u0131yorsan\u0131z, `daemonize yes` kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>logfile: Log Dosyas\u0131 Yolunu Belirleme<\/h4>\n<p>Redis&#8217;in olaylar\u0131, hatalar\u0131 ve uyar\u0131lar\u0131 kaydedece\u011fi log dosyas\u0131n\u0131n yolunu belirtir. Varsay\u0131lan olarak genellikle `\/var\/log\/redis\/redis-server.log` gibi bir yola ayarlanm\u0131\u015ft\u0131r. Sorun giderme ve izleme i\u00e7in bu loglar\u0131 d\u00fczenli olarak kontrol etmek \u00f6nemlidir.<\/p>\n<h4>databases: Veritaban\u0131 Say\u0131s\u0131n\u0131 Ayarlama<\/h4>\n<p>Redis, tek bir \u00f6rnek i\u00e7inde birden fazla mant\u0131ksal veritaban\u0131n\u0131 destekler. Varsay\u0131lan olarak 16 veritaban\u0131 (0&#8217;dan 15&#8217;e kadar numaraland\u0131r\u0131lm\u0131\u015f) bulunur. `redis-cli` \u00fczerinden `SELECT <db_numarasi>` komutuyla veritabanlar\u0131 aras\u0131nda ge\u00e7i\u015f yapabilirsiniz. \u00d6rne\u011fin, `SELECT 1` komutu ile ikinci veritaban\u0131na ge\u00e7ersiniz. Bu ayar ile veritaban\u0131 say\u0131s\u0131n\u0131 de\u011fi\u015ftirebilirsiniz: `databases 32`.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Bellek-Yonetimi\"><\/span>Bellek Y\u00f6netimi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;in performans\u0131n\u0131 ve kararl\u0131l\u0131\u011f\u0131n\u0131 do\u011frudan etkileyen en \u00f6nemli ayarlardan baz\u0131lar\u0131 bellek y\u00f6netimi ile ilgilidir.<\/p>\n<h4>maxmemory: Maksimum Bellek S\u0131n\u0131r\u0131 Belirleme<\/h4>\n<p>Bu direktif, Redis&#8217;in kullanabilece\u011fi maksimum RAM miktar\u0131n\u0131 belirlemenizi sa\u011flar. \u00d6rne\u011fin, `maxmemory 2gb` ayar\u0131 Redis&#8217;i 2 gigabayt ile s\u0131n\u0131rlar. Bu s\u0131n\u0131r a\u015f\u0131ld\u0131\u011f\u0131nda Redis, `maxmemory-policy` ayar\u0131na g\u00f6re mevcut anahtarlardan baz\u0131lar\u0131n\u0131 silmeye ba\u015flar. Bu ayar\u0131 yapmak, Redis&#8217;in sistemdeki t\u00fcm belle\u011fi t\u00fcketerek di\u011fer i\u015flemleri olumsuz etkilemesini \u00f6nlemek i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h4>maxmemory-policy: Bellek Doldu\u011funda Uygulanacak Stratejiler<\/h4>\n<p>`maxmemory` s\u0131n\u0131r\u0131na ula\u015f\u0131ld\u0131\u011f\u0131nda Redis&#8217;in hangi anahtarlar\u0131 silece\u011fini belirleyen politikad\u0131r. En yayg\u0131n kullan\u0131lan politikalardan baz\u0131lar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><b>noeviction:<\/b> Hi\u00e7bir anahtar silinmez, bunun yerine yazma komutlar\u0131 hata d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><b>allkeys-lru:<\/b> En son en az kullan\u0131lan (Least Recently Used) anahtarlar\u0131 siler. Genel ama\u00e7l\u0131 \u00f6nbellekleme i\u00e7in iyi bir se\u00e7enektir.<\/li>\n<li><b>volatile-lru:<\/b> Sadece son kullanma tarihi (expire) ayarlanm\u0131\u015f anahtarlar aras\u0131ndan en son en az kullan\u0131lan\u0131 siler.<\/li>\n<li><b>allkeys-random:<\/b> Rastgele bir anahtar siler.<\/li>\n<li><b>volatile-ttl:<\/b> Son kullanma tarihi en yak\u0131n olan anahtar\u0131 siler.<\/li>\n<\/ul>\n<p>Do\u011fru politikay\u0131 se\u00e7mek, uygulaman\u0131z\u0131n veri eri\u015fim desenlerine ba\u011fl\u0131d\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Veri-Kaliciligi-Persistence-Mekanizmalari\"><\/span>Veri Kal\u0131c\u0131l\u0131\u011f\u0131 (Persistence) Mekanizmalar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis&#8217;in verileri birincil olarak bellekte tutmas\u0131, ona ola\u011fan\u00fcst\u00fc bir h\u0131z kazand\u0131r\u0131r. Ancak, sunucunun kapanmas\u0131, \u00e7\u00f6kmesi veya yeniden ba\u015flat\u0131lmas\u0131 gibi durumlarda bellekteki verilerin kaybolmamas\u0131 i\u00e7in kal\u0131c\u0131l\u0131k (persistence) mekanizmalar\u0131na ihtiya\u00e7 vard\u0131r. Redis, bu ihtiyac\u0131 kar\u015f\u0131lamak i\u00e7in iki farkl\u0131 ve birbirini tamamlay\u0131c\u0131 y\u00f6ntem sunar: RDB ve AOF. Bu y\u00f6ntemler, veri dayan\u0131kl\u0131l\u0131\u011f\u0131 ve performans aras\u0131nda farkl\u0131 dengeler kurar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"RDB-Redis-Database-ile-Anlik-Goruntu-Snapshotting\"><\/span>RDB (Redis Database) ile Anl\u0131k G\u00f6r\u00fcnt\u00fc (Snapshotting)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>RDB, en basit kal\u0131c\u0131l\u0131k y\u00f6ntemidir. Belirli zaman aral\u0131klar\u0131nda veya belirli say\u0131da yazma i\u015flemi yap\u0131ld\u0131\u011f\u0131nda, Redis t\u00fcm veri setinin anl\u0131k bir g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc (snapshot) al\u0131r ve bunu s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f bir ikili dosya (`dump.rdb`) olarak diske kaydeder. Sunucu yeniden ba\u015flad\u0131\u011f\u0131nda, bu dosyay\u0131 okuyarak durumu en son anl\u0131k g\u00f6r\u00fcnt\u00fcye geri y\u00fckler.<\/p>\n<h4>`save` Yap\u0131land\u0131rma Direktifleri<\/h4>\n<p>RDB&#8217;nin ne zaman tetiklenece\u011fi `redis.conf` dosyas\u0131ndaki `save` direktifleriyle belirlenir. Birden fazla `save` kural\u0131 tan\u0131mlanabilir. \u00d6rne\u011fin:<br \/>\n<code><br \/>\nsave 900 1<br \/>\nsave 300 10<br \/>\nsave 60 10000<br \/>\n<\/code><br \/>\nBu kurallar \u015fu anlama gelir:<\/p>\n<ul>\n<li>900 saniye (15 dakika) i\u00e7inde en az 1 anahtar de\u011fi\u015ftiyse, anl\u0131k g\u00f6r\u00fcnt\u00fc al.<\/li>\n<li>300 saniye (5 dakika) i\u00e7inde en az 10 anahtar de\u011fi\u015ftiyse, anl\u0131k g\u00f6r\u00fcnt\u00fc al.<\/li>\n<li>60 saniye i\u00e7inde en az 10000 anahtar de\u011fi\u015ftiyse, anl\u0131k g\u00f6r\u00fcnt\u00fc al.<\/li>\n<\/ul>\n<h4>RDB Mekanizmas\u0131n\u0131n Avantajlar\u0131 ve Dezavantajlar\u0131<\/h4>\n<p><b>Avantajlar\u0131:<\/b><\/p>\n<ul>\n<li><b>Kompakt Dosya:<\/b> RDB dosyas\u0131 s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f oldu\u011fu i\u00e7in yedekleme ve transfer i\u00e7in idealdir.<\/li>\n<li><b>H\u0131zl\u0131 Geri Y\u00fckleme:<\/b> Sunucu ba\u015flang\u0131c\u0131nda tek bir dosyay\u0131 okumak, AOF&#8217;ye g\u00f6re genellikle daha h\u0131zl\u0131d\u0131r.<\/li>\n<li><b>Performans:<\/b> Anl\u0131k g\u00f6r\u00fcnt\u00fc alma i\u015flemi, ayr\u0131 bir i\u015flem (fork) taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131 i\u00e7in ana Redis s\u00fcrecini daha az etkiler.<\/li>\n<\/ul>\n<p><b>Dezavantajlar\u0131:<\/b><\/p>\n<ul>\n<li><b>Veri Kayb\u0131 Riski:<\/b> RDB, periyodik olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, en son anl\u0131k g\u00f6r\u00fcnt\u00fcden sonra meydana gelen bir \u00e7\u00f6kme durumunda aradaki t\u00fcm veri de\u011fi\u015fiklikleri kaybolabilir. \u00d6rne\u011fin, yukar\u0131daki konfig\u00fcrasyonda en k\u00f6t\u00fc senaryoda 15 dakikal\u0131k veri kayb\u0131 ya\u015fanabilir.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"AOF-Append-Only-File-ile-Gunlukleme\"><\/span>AOF (Append Only File) ile G\u00fcnl\u00fckleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>AOF (Yaln\u0131zca Ekleme Dosyas\u0131), RDB&#8217;ye g\u00f6re daha dayan\u0131kl\u0131 bir kal\u0131c\u0131l\u0131k y\u00f6ntemidir. Bu modda Redis, sunucuya gelen her yazma komutunu (veri ekleyen, de\u011fi\u015ftiren veya silen) bir log dosyas\u0131na (`appendonly.aof`) s\u0131rayla ekler. Sunucu yeniden ba\u015flad\u0131\u011f\u0131nda, Redis bu AOF dosyas\u0131ndaki komutlar\u0131 ba\u015ftan sona tekrar \u00e7al\u0131\u015ft\u0131rarak veri setini yeniden olu\u015fturur. Bu, veri kayb\u0131 riskini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<h4>`appendfsync` Politikalar\u0131 (always, everysec, no)<\/h4>\n<p>AOF&#8217;nin ne kadar s\u0131kl\u0131kla diske yaz\u0131laca\u011f\u0131n\u0131 (fsync) `appendfsync` direktifi belirler. Bu ayar, dayan\u0131kl\u0131l\u0131k ve performans aras\u0131nda bir denge kurar:<\/p>\n<ul>\n<li><b>always:<\/b> Her yazma komutu an\u0131nda diske senkronize edilir. Bu en g\u00fcvenli se\u00e7enektir ancak performans\u0131 ciddi \u015fekilde d\u00fc\u015f\u00fcr\u00fcr \u00e7\u00fcnk\u00fc her komut bir disk G\/\u00c7 i\u015flemi bekler.<\/li>\n<li><b>everysec:<\/b> Komutlar saniyede bir toplu olarak diske yaz\u0131l\u0131r. Bu varsay\u0131lan ve en \u00e7ok \u00f6nerilen ayard\u0131r. Performans ve dayan\u0131kl\u0131l\u0131k aras\u0131nda m\u00fckemmel bir denge sunar. En k\u00f6t\u00fc senaryoda sadece 1 saniyelik veri kayb\u0131 riski vard\u0131r.<\/li>\n<li><b>no:<\/b> Yazma i\u015flemini i\u015fletim sistemine b\u0131rak\u0131r. En h\u0131zl\u0131 se\u00e7enektir ancak en az g\u00fcvenli olan\u0131d\u0131r. \u0130\u015fletim sistemi diske ne zaman yazaca\u011f\u0131na karar verir.<\/li>\n<\/ul>\n<h4>AOF Mekanizmas\u0131n\u0131n Avantajlar\u0131 ve Dezavantajlar\u0131<\/h4>\n<p><b>Avantajlar\u0131:<\/b><\/p>\n<ul>\n<li><b>Daha Y\u00fcksek Dayan\u0131kl\u0131l\u0131k:<\/b> `everysec` politikas\u0131 ile veri kayb\u0131 riski minimuma indirilir (en fazla 1 saniye).<\/li>\n<li><b>Okunabilir Dosya:<\/b> AOF dosyas\u0131, Redis komutlar\u0131n\u0131 i\u00e7eren bir metin dosyas\u0131d\u0131r. Bu, dosyan\u0131n bozulmas\u0131 durumunda manuel olarak d\u00fczenlenmesini veya onar\u0131lmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p><b>Dezavantajlar\u0131:<\/b><\/p>\n<ul>\n<li><b>Daha B\u00fcy\u00fck Dosya Boyutu:<\/b> AOF dosyas\u0131, zamanla ayn\u0131 veriyi yeniden olu\u015fturan RDB anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcnden daha b\u00fcy\u00fck olma e\u011filimindedir. (Redis, bu sorunu \u00e7\u00f6zmek i\u00e7in AOF dosyas\u0131n\u0131 periyodik olarak yeniden yazarak k\u00fc\u00e7\u00fclt\u00fcr).<\/li>\n<li><b>Daha Yava\u015f Geri Y\u00fckleme:<\/b> B\u00fcy\u00fck bir AOF dosyas\u0131ndaki t\u00fcm komutlar\u0131 yeniden oynatmak, RDB dosyas\u0131n\u0131 y\u00fcklemekten daha uzun s\u00fcrebilir.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"RDB-ve-AOFnin-Birlikte-Kullanimi-ve-En-Iyi-Pratikler\"><\/span>RDB ve AOF&#8217;nin Birlikte Kullan\u0131m\u0131 ve En \u0130yi Pratikler<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En y\u00fcksek seviyede veri g\u00fcvenli\u011fi i\u00e7in Redis, hem RDB hem de AOF mekanizmalar\u0131n\u0131n ayn\u0131 anda etkinle\u015ftirilmesini destekler. Bu senaryoda:<\/p>\n<ul>\n<li>Sunucu yeniden ba\u015flad\u0131\u011f\u0131nda, veri kurtarma i\u00e7in AOF dosyas\u0131 kullan\u0131l\u0131r \u00e7\u00fcnk\u00fc daha g\u00fcncel veriyi garanti eder.<\/li>\n<li>RDB anl\u0131k g\u00f6r\u00fcnt\u00fcleri ise d\u00fczenli olarak al\u0131nmaya devam eder. Bu RDB dosyalar\u0131, yedekleme (backup), ola\u011fan\u00fcst\u00fc durum kurtarma (disaster recovery) veya replikasyon kurulumlar\u0131 i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<p><b>Genel \u00f6neri:<\/b> E\u011fer veri kayb\u0131na kar\u015f\u0131 \u00e7ok d\u00fc\u015f\u00fck bir tolerans\u0131n\u0131z varsa (finansal veriler, kritik kullan\u0131c\u0131 bilgileri vb.), hem AOF&#8217;yi (`appendfsync everysec` ile) hem de RDB&#8217;yi etkinle\u015ftirin. E\u011fer birka\u00e7 dakikal\u0131k veri kayb\u0131 kabul edilebilirse ve \u00f6ncelik h\u0131zl\u0131 yedekleme ve kurtarma ise (\u00f6rne\u011fin bir \u00f6nbellek sunucusu i\u00e7in), sadece RDB kullanmak yeterli olabilir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Redis-Guvenlik-Yapilandirmasi-ve-En-Iyi-Pratikler\"><\/span>Redis G\u00fcvenlik Yap\u0131land\u0131rmas\u0131 ve En \u0130yi Pratikler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis, son derece h\u0131zl\u0131 ve verimli olacak \u015fekilde tasarlanm\u0131\u015ft\u0131r, ancak varsay\u0131lan kurulumu g\u00fcvenli bir a\u011f ortam\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lmak \u00fczere optimize edilmi\u015ftir. \u0130nternete a\u00e7\u0131k veya g\u00fcvenilmeyen a\u011flarda \u00e7al\u0131\u015facak Redis sunucular\u0131n\u0131n ek g\u00fcvenlik \u00f6nlemleriyle yap\u0131land\u0131r\u0131lmas\u0131 kritik \u00f6neme sahiptir. Bu b\u00f6l\u00fcmde, Redis sunucunuzu yetkisiz eri\u015fime ve k\u00f6t\u00fc niyetli sald\u0131r\u0131lara kar\u015f\u0131 korumak i\u00e7in uygulaman\u0131z gereken temel g\u00fcvenlik ad\u0131mlar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"requirepass-ile-Parola-Korumasi-Ekleme\"><\/span>`requirepass` ile Parola Korumas\u0131 Ekleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis sunucusunu koruman\u0131n ilk ve en \u00f6nemli ad\u0131m\u0131, bir parola belirlemektir. Bu, `redis.conf` dosyas\u0131ndaki `requirepass` direktifi ile yap\u0131l\u0131r.<br \/>\n<code><br \/>\n# redis.conf dosyas\u0131nda<br \/>\nrequirepass SizinCokGuvenliParolaniz<br \/>\n<\/code><br \/>\nBu ayar\u0131 yapt\u0131ktan ve Redis&#8217;i yeniden ba\u015flatt\u0131ktan sonra, istemcilerin herhangi bir komut y\u00fcr\u00fctebilmesi i\u00e7in \u00f6nce `AUTH` komutuyla kimlik do\u011frulamas\u0131 yapmas\u0131 gerekir.<br \/>\n<code><br \/>\n$ redis-cli<br \/>\n127.0.0.1:6379> SET anahtar deger<br \/>\n(error) NOAUTH Authentication required.<\/p>\n<p>127.0.0.1:6379> AUTH SizinCokGuvenliParolaniz<br \/>\nOK<\/p>\n<p>127.0.0.1:6379> SET anahtar deger<br \/>\nOK<br \/>\n<\/code><br \/>\nParolan\u0131z\u0131n karma\u015f\u0131k ve tahmin edilmesi zor oldu\u011fundan emin olun.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tehlikeli-Komutlarin-Devre-Disi-Birakilmasi-veya-Yeniden-Adlandirilmasi-rename-command\"><\/span>Tehlikeli Komutlar\u0131n Devre D\u0131\u015f\u0131 B\u0131rak\u0131lmas\u0131 veya Yeniden Adland\u0131r\u0131lmas\u0131 (`rename-command`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis, sunucu y\u00f6netimi ve hata ay\u0131klama i\u00e7in g\u00fc\u00e7l\u00fc komutlar i\u00e7erir. Ancak `FLUSHALL` (t\u00fcm veritabanlar\u0131n\u0131 siler), `CONFIG` (sunucu yap\u0131land\u0131rmas\u0131n\u0131 anl\u0131k olarak de\u011fi\u015ftirir) veya `KEYS` (\u00fcretim ortam\u0131nda performans\u0131 olumsuz etkileyebilir) gibi komutlar, k\u00f6t\u00fc niyetli bir kullan\u0131c\u0131 taraf\u0131ndan ele ge\u00e7irildi\u011finde b\u00fcy\u00fck hasara yol a\u00e7abilir.<br \/>\n`redis.conf` dosyas\u0131ndaki `rename-command` direktifi ile bu komutlar\u0131 devre d\u0131\u015f\u0131 b\u0131rakabilir veya tahmin edilmesi zor isimlerle yeniden adland\u0131rabilirsiniz.<\/p>\n<p><b>Komutu devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in bo\u015f bir dizeye yeniden adland\u0131r\u0131n:<\/b><\/p>\n<p><code><br \/>\n# FLUSHALL komutunu tamamen devre d\u0131\u015f\u0131 b\u0131rak\u0131r<br \/>\nrename-command FLUSHALL \"\"<br \/>\n<\/code><\/p>\n<p><b>Komutu yeniden adland\u0131rmak i\u00e7in:<\/b><\/p>\n<p><code><br \/>\n# CONFIG komutunu tahmin edilmesi zor bir isimle de\u011fi\u015ftirir<br \/>\nrename-command CONFIG \"a8f5b1c9d2e3f4a5b6c7d8e9f0a1b2c3\"<br \/>\n<\/code><br \/>\nBu, yetkisiz kullan\u0131c\u0131lar\u0131n bu tehlikeli komutlar\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 engeller.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Guvenli-Bir-Ag-Yapilandirmasi-ve-Guvenlik-Duvari-Kurallari\"><\/span>G\u00fcvenli Bir A\u011f Yap\u0131land\u0131rmas\u0131 ve G\u00fcvenlik Duvar\u0131 Kurallar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En temel g\u00fcvenlik prensiplerinden biri, Redis sunucusuna eri\u015fimi sadece ihtiya\u00e7 duyan sistemlerle s\u0131n\u0131rlamakt\u0131r.<\/p>\n<ul>\n<li><b>`bind` Direktifi:<\/b> `redis.conf` dosyas\u0131ndaki `bind` direktifini kullanarak Redis&#8217;in sadece g\u00fcvenilir a\u011f aray\u00fczlerini (\u00f6rne\u011fin, uygulaman\u0131z\u0131n bulundu\u011fu sunucunun \u00f6zel IP adresi) dinlemesini sa\u011flay\u0131n. Asla `bind 0.0.0.0` ayar\u0131n\u0131 bir g\u00fcvenlik duvar\u0131 olmadan kullanmay\u0131n.<\/li>\n<li><b><a href=\"https:\/\/www.ihs.com.tr\/blog\/firewall-nedir-ne-ise-yarar\/\" target=\"_blank\">G\u00fcvenlik Duvar\u0131 (Firewall)<\/a>:<\/b> Sunucunuzun g\u00fcvenlik duvar\u0131n\u0131 (\u00f6rne\u011fin, Linux&#8217;ta `iptables` veya `ufw`) yap\u0131land\u0131rarak Redis portuna (varsay\u0131lan 6379) sadece belirli IP adreslerinden veya IP bloklar\u0131ndan eri\u015fime izin verin. \u00d6rne\u011fin, `ufw` ile sadece `192.168.1.10` IP&#8217;sinden gelen ba\u011flant\u0131lara izin vermek i\u00e7in:<br \/>\n <code><br \/>\n sudo ufw allow from 192.168.1.10 to any port 6379<br \/>\n <\/code>\n <\/li>\n<\/ul>\n<p>Redis sunucusunu asla do\u011frudan internete a\u00e7\u0131k b\u0131rakmay\u0131n.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"SSLTLS-ile-Istemci-Sunucu-Iletisimini-Sifreleme\"><\/span>SSL\/TLS ile \u0130stemci-Sunucu \u0130leti\u015fimini \u015eifreleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Varsay\u0131lan olarak, Redis istemcileri ile sunucu aras\u0131ndaki ileti\u015fim \u015fifrelenmemi\u015ftir. Bu, a\u011f trafi\u011fini dinleyen birinin komutlar\u0131 ve verileri (parola dahil) g\u00f6rebilece\u011fi anlam\u0131na gelir. G\u00fcvenilmeyen a\u011flar \u00fczerinden (\u00f6rne\u011fin, internet) Redis&#8217;e ba\u011flan\u0131yorsan\u0131z, ileti\u015fimi <a href=\"https:\/\/www.ihs.com.tr\/ssl\/\" target=\"_blank\">SSL<\/a>\/TLS ile \u015fifrelemek \u00e7ok \u00f6nemlidir.<br \/>\nRedis 6.0 ve \u00fczeri s\u00fcr\u00fcmler, yerel olarak TLS deste\u011fi sunar. Bu \u00f6zelli\u011fi etkinle\u015ftirmek i\u00e7in `redis.conf` dosyas\u0131nda a\u015fa\u011f\u0131daki gibi yap\u0131land\u0131rmalar yapman\u0131z gerekir:<br \/>\n<code><br \/>\n# TLS portunu etkinle\u015ftir. Genellikle normal porttan farkl\u0131 bir port kullan\u0131l\u0131r.<br \/>\ntls-port 6380<br \/>\n# Sertifika ve anahtar dosyalar\u0131n\u0131n yollar\u0131<br \/>\ntls-cert-file \/path\/to\/redis.crt<br \/>\ntls-key-file \/path\/to\/redis.key<br \/>\n# Sertifika yetkilisinin (CA) dosyas\u0131<br \/>\ntls-ca-cert-file \/path\/to\/ca.crt<br \/>\n<\/code><br \/>\nBu yap\u0131land\u0131rma, sunucu ve istemci aras\u0131nda g\u00fcvenli, \u015fifrelenmi\u015f bir ba\u011flant\u0131 kanal\u0131 olu\u015fturur ve &#8220;man-in-the-middle&#8221; sald\u0131r\u0131lar\u0131na kar\u015f\u0131 koruma sa\u011flar.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Redis-Veri-Tipleri-ve-Kullanim-Senaryolari\"><\/span>Redis Veri Tipleri ve Kullan\u0131m Senaryolar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis&#8217;in g\u00fcc\u00fc, sadece h\u0131zl\u0131 bir anahtar-de\u011fer deposu olmas\u0131ndan de\u011fil, ayn\u0131 zamanda \u00e7e\u015fitli ve g\u00fc\u00e7l\u00fc yerle\u015fik veri tiplerini desteklemesinden gelir. Bu veri tipleri, atomik operasyonlarla y\u00f6netilir ve geli\u015ftiricilerin karma\u015f\u0131k sorunlar\u0131 daha az kodla, do\u011frudan veritaban\u0131 seviyesinde \u00e7\u00f6zmelerine olanak tan\u0131r. Her veri tipinin kendine \u00f6zg\u00fc kullan\u0131m senaryolar\u0131 vard\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Strings-Dizeler\"><\/span>Strings (Dizeler)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En temel Redis veri tipidir. Anahtarlar bir dizeye (string) e\u015flenir. Bu dizeler metin, serile\u015ftirilmi\u015f JSON nesneleri veya 512 MB&#8217;a kadar ikili veri (\u00f6rne\u011fin, bir resim) olabilir.<br \/>\n<b>Kullan\u0131m Senaryolar\u0131:<\/b><\/p>\n<ul>\n<li><b>\u00d6nbellekleme:<\/b> Veritaban\u0131 sorgu sonu\u00e7lar\u0131n\u0131 veya HTML par\u00e7alar\u0131n\u0131 \u00f6nbelle\u011fe almak. (\u00d6rn: `SET page:home:html &#8220;&#8230;&#8221;`)<\/li>\n<li><b>Saya\u00e7lar:<\/b> `INCR` ve `DECR` gibi atomik komutlarla web sitesi ziyaret\u00e7i say\u0131s\u0131, be\u011feni say\u0131s\u0131 gibi saya\u00e7lar\u0131 tutmak. (\u00d6rn: `INCR article:123:views`)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Lists-Listeler\"><\/span>Lists (Listeler)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Eklenme s\u0131ras\u0131na g\u00f6re s\u0131ralanm\u0131\u015f bir dize koleksiyonudur. Listeler, hem ba\u015f\u0131ndan (sol) hem de sonundan (sa\u011f) eleman ekleme ve \u00e7\u0131karma i\u015flemlerini (push\/pop) \u00e7ok verimli bir \u015fekilde yapabilir.<br \/>\n<b>Kullan\u0131m Senaryolar\u0131:<\/b><\/p>\n<ul>\n<li><b>Mesaj Kuyruklar\u0131:<\/b> Bir i\u015flem `LPUSH` ile g\u00f6revleri kuyru\u011fa eklerken, ba\u015fka bir i\u015flem `BRPOP` (bloke edici pop) ile kuyruktan g\u00f6revleri al\u0131p i\u015fler.<\/li>\n<li><b>Zaman \u00c7izelgeleri (Timelines):<\/b> Sosyal medya uygulamalar\u0131nda kullan\u0131c\u0131lar\u0131n en son g\u00f6nderilerini bir listede tutmak. (\u00d6rn: `LPUSH user:1:posts &#8220;post_id_5&#8243;`)<\/li>\n<li><b>Son G\u00f6r\u00fcnt\u00fclenen \u00dcr\u00fcnler:<\/b> Bir kullan\u0131c\u0131n\u0131n e-ticaret sitesinde gezdi\u011fi son N \u00fcr\u00fcn\u00fc bir listede saklamak.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Hashes-Karma-Haritalar\"><\/span>Hashes (Karma Haritalar)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir anahtar i\u00e7inde alan-de\u011fer (field-value) \u00e7iftlerini depolamak i\u00e7in kullan\u0131l\u0131r. Bu, bir nesnenin \u00f6zelliklerini gruplamak i\u00e7in idealdir.<br \/>\n<b>Kullan\u0131m Senaryolar\u0131:<\/b><\/p>\n<ul>\n<li><b>Kullan\u0131c\u0131 Profilleri:<\/b> Bir kullan\u0131c\u0131n\u0131n ad\u0131, e-postas\u0131, ya\u015f\u0131 gibi birden \u00e7ok alan\u0131n\u0131 tek bir anahtar alt\u0131nda saklamak. (\u00d6rn: `HSET user:1 name &#8220;Ali&#8221; email &#8220;ali@example.com&#8221;`)<\/li>\n<li><b>\u00dcr\u00fcn Bilgileri:<\/b> Bir \u00fcr\u00fcn\u00fcn fiyat\u0131, stok durumu, rengi gibi bilgilerini bir hash i\u00e7inde tutmak.<\/li>\n<li>Oturum verilerini (session data) y\u00f6netmek.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Sets-Siralanmamis-Kumeler\"><\/span>Sets (S\u0131ralanmam\u0131\u015f K\u00fcmeler)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Tekrarlanmayan, s\u0131ras\u0131z dize koleksiyonlar\u0131d\u0131r. K\u00fcmeler, eleman ekleme, \u00e7\u0131karma, varl\u0131\u011f\u0131n\u0131 kontrol etme gibi i\u015flemleri \u00e7ok h\u0131zl\u0131 yapar. Ayr\u0131ca k\u00fcmeler aras\u0131 birle\u015fim (union), kesi\u015fim (intersection) ve fark (difference) gibi operasyonlar\u0131 destekler.<br \/>\n<b>Kullan\u0131m Senaryolar\u0131:<\/b><\/p>\n<ul>\n<li><b>Etiketleme (Tagging):<\/b> Bir blog yaz\u0131s\u0131na veya \u00fcr\u00fcne ait etiketleri bir k\u00fcmede saklamak. (\u00d6rn: `SADD post:1:tags &#8220;redis&#8221; &#8220;nosql&#8221; &#8220;database&#8221;`)<\/li>\n<li><b>Benzersiz Ziyaret\u00e7i Takibi:<\/b> Bir sayfay\u0131 ziyaret eden benzersiz kullan\u0131c\u0131lar\u0131n IP adreslerini veya ID&#8217;lerini bir k\u00fcmede tutmak.<\/li>\n<li><b>Ortak Arkada\u015f Bulma:<\/b> \u0130ki kullan\u0131c\u0131n\u0131n arkada\u015f listelerinin kesi\u015fimini alarak ortak arkada\u015flar\u0131n\u0131 bulmak.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Sorted-Sets-Sirali-Kumeler\"><\/span>Sorted Sets (S\u0131ral\u0131 K\u00fcmeler)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>S\u0131ral\u0131 k\u00fcmeler, her bir eleman\u0131n bir &#8220;skor&#8221; ile ili\u015fkilendirildi\u011fi, tekrarlanmayan dize koleksiyonlar\u0131d\u0131r. Elemanlar bu skora g\u00f6re s\u0131ral\u0131 olarak tutulur. Bu, Redis&#8217;in en g\u00fc\u00e7l\u00fc veri tiplerinden biridir.<br \/>\n<b>Kullan\u0131m Senaryolar\u0131:<\/b><\/p>\n<ul>\n<li><b>Lider Tablolar\u0131 (Leaderboards):<\/b> Oyunlarda oyuncular\u0131 skorlar\u0131na g\u00f6re s\u0131ralamak. (\u00d6rn: `ZADD leaderboard 1500 &#8220;oyuncu1&#8243;`)<\/li>\n<li><b>\u00d6ncelik Kuyruklar\u0131 (Priority Queues):<\/b> G\u00f6revleri \u00f6nceliklerine (skor) g\u00f6re s\u0131ral\u0131 bir \u015fekilde i\u015flemek.<\/li>\n<li><b>Puanlama Sistemleri:<\/b> Kullan\u0131c\u0131lar\u0131n oylar\u0131na g\u00f6re i\u00e7erikleri s\u0131ralamak.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Diger-Veri-Tipleri-Bitmaps-HyperLogLogs-Geospatial\"><\/span>Di\u011fer Veri Tipleri (Bitmaps, HyperLogLogs, Geospatial)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis, daha \u00f6zel kullan\u0131m durumlar\u0131 i\u00e7in geli\u015fmi\u015f veri tipleri de sunar:<\/p>\n<ul>\n<li><b>Bitmaps:<\/b> Dizeler \u00fczerinde bit seviyesinde operasyonlar yapmay\u0131 sa\u011flar. Kullan\u0131c\u0131lar\u0131n aktif\/pasif durumlar\u0131, g\u00fcnl\u00fck giri\u015fler gibi b\u00fcy\u00fck veri setlerinde boolean (do\u011fru\/yanl\u0131\u015f) bilgileri \u00e7ok verimli bir \u015fekilde saklamak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><b>HyperLogLogs:<\/b> \u00c7ok b\u00fcy\u00fck veri setlerindeki benzersiz eleman say\u0131s\u0131n\u0131 yakla\u015f\u0131k olarak ve \u00e7ok az bellek kullanarak tahmin etmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, bir arama teriminin ka\u00e7 farkl\u0131 kullan\u0131c\u0131 taraf\u0131ndan arat\u0131ld\u0131\u011f\u0131n\u0131 tahmin etmek.<\/li>\n<li><b>Geospatial:<\/b> Co\u011frafi konum verilerini (enlem, boylam) depolamay\u0131 ve bu veriler \u00fczerinde sorgular yapmay\u0131 (\u00f6rne\u011fin, belirli bir noktaya belirli bir yar\u0131\u00e7ap i\u00e7indeki yerleri bulma) sa\u011flar.<\/li>\n<\/ul>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>Veri Tipi<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>Yayg\u0131n Kullan\u0131m Senaryosu<\/th>\n<th>\u00d6rnek Komutlar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Strings<\/strong><\/td>\n<td>Basit anahtar-de\u011fer depolama<\/td>\n<td>\u00d6nbellekleme, Saya\u00e7lar<\/td>\n<td><code>SET<\/code>, <code>GET<\/code>, <code>INCR<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Lists<\/strong><\/td>\n<td>S\u0131ral\u0131 eleman koleksiyonu<\/td>\n<td>Mesaj Kuyruklar\u0131, Zaman \u00c7izelgeleri<\/td>\n<td><code>LPUSH<\/code>, <code>RPOP<\/code>, <code>LRANGE<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Hashes<\/strong><\/td>\n<td>Bir anahtar alt\u0131nda alan-de\u011fer \u00e7iftleri<\/td>\n<td>Kullan\u0131c\u0131 Profilleri, Oturum Y\u00f6netimi<\/td>\n<td><code>HSET<\/code>, <code>HGET<\/code>, <code>HGETALL<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Sets<\/strong><\/td>\n<td>Tekrarlanmayan, s\u0131ras\u0131z eleman k\u00fcmesi<\/td>\n<td>Etiketleme, Benzersizlik Kontrol\u00fc<\/td>\n<td><code>SADD<\/code>, <code>SISMEMBER<\/code>, <code>SINTER<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Sorted Sets<\/strong><\/td>\n<td>Skora g\u00f6re s\u0131ralanm\u0131\u015f, tekrarlanmayan eleman k\u00fcmesi<\/td>\n<td>Lider Tablolar\u0131, Puanlama Sistemleri<\/td>\n<td><code>ZADD<\/code>, <code>ZRANGE<\/code>, <code>ZRANK<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Yuksek-Erisilebilirlik-High-Availability-ve-Olceklendirme\"><\/span>Y\u00fcksek Eri\u015filebilirlik (High Availability) ve \u00d6l\u00e7eklendirme<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tek bir Redis sunucusu, bir\u00e7ok uygulama i\u00e7in yeterli performans\u0131 sunsa da, \u00fcretim ortamlar\u0131nda tek bir sunucuya ba\u011f\u0131ml\u0131 kalmak risklidir. Sunucunun donan\u0131m ar\u0131zas\u0131, a\u011f kesintisi veya bak\u0131m nedeniyle hizmet d\u0131\u015f\u0131 kalmas\u0131, uygulaman\u0131n tamamen durmas\u0131na neden olabilir. Ayr\u0131ca, veri seti b\u00fcy\u00fcd\u00fc\u011f\u00fcnde veya trafik artt\u0131\u011f\u0131nda tek bir sunucunun kaynaklar\u0131 (RAM, CPU) yetersiz kalabilir. Redis, bu t\u00fcr sorunlar\u0131 \u00e7\u00f6zmek i\u00e7in y\u00fcksek eri\u015filebilirlik (high availability) ve \u00f6l\u00e7eklendirme (scaling) i\u00e7in \u00e7e\u015fitli stratejiler sunar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redis-Replication-Master-Slave-Mimarisi\"><\/span>Redis Replication (Master-Slave Mimarisi)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Replikasyon, verilerin bir Redis sunucusundan (master) bir veya daha fazla ba\u015fka Redis sunucusuna (slave\/replica) kopyalanmas\u0131 i\u015flemidir. Bu mimari, hem veri yedeklili\u011fi hem de okuma performans\u0131n\u0131 art\u0131rma amac\u0131yla kullan\u0131l\u0131r.<\/p>\n<ul>\n<li><b>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/b> Master sunucusu t\u00fcm yazma i\u015flemlerini kabul eder ve bu de\u011fi\u015fiklikleri kendisine ba\u011fl\u0131 olan t\u00fcm slave&#8217;lere anl\u0131k olarak g\u00f6nderir. Slave&#8217;ler ise bu verilerin birebir kopyas\u0131n\u0131 tutar.<\/li>\n<li><b>Avantajlar\u0131:<\/b>\n<ul>\n<li><b>Y\u00fcksek Eri\u015filebilirlik:<\/b> Master sunucu \u00e7\u00f6kerse, slave&#8217;lerden biri manuel olarak master rol\u00fcne y\u00fckseltilerek sistemin \u00e7al\u0131\u015fmaya devam etmesi sa\u011flanabilir.<\/li>\n<li><b>Okuma \u00d6l\u00e7eklendirme:<\/b> Yazma i\u015flemleri master&#8217;a giderken, yo\u011fun okuma i\u015flemleri (read-heavy workloads) slave&#8217;ler aras\u0131nda da\u011f\u0131t\u0131larak master \u00fczerindeki y\u00fck azalt\u0131labilir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Redis-Sentinel-ile-Otomatik-Yuk-Devretme-Automatic-Failover\"><\/span>Redis Sentinel ile Otomatik Y\u00fck Devretme (Automatic Failover)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Standart replikasyonda, master sunucu \u00e7\u00f6kt\u00fc\u011f\u00fcnde bir slave&#8217;in master olarak atanmas\u0131 manuel bir i\u015flemdir. Redis Sentinel, bu s\u00fcreci otomatikle\u015ftiren bir y\u00fcksek eri\u015filebilirlik \u00e7\u00f6z\u00fcm\u00fcd\u00fcr.<\/p>\n<ul>\n<li><b>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/b> Sentinel, master ve slave sunucular\u0131n\u0131 s\u00fcrekli olarak izleyen ayr\u0131 bir s\u00fcre\u00e7tir. Genellikle en az \u00fc\u00e7 Sentinel s\u00fcreci, birbirleriyle ileti\u015fim halinde \u00e7al\u0131\u015f\u0131r. Master sunucunun ula\u015f\u0131lamaz oldu\u011funu tespit ettiklerinde, aralar\u0131nda bir oylama yaparak bir slave&#8217;i yeni master olarak se\u00e7erler ve di\u011fer slave&#8217;leri yeni master&#8217;\u0131 takip edecek \u015fekilde yeniden yap\u0131land\u0131r\u0131rlar. Ayr\u0131ca, uygulama istemcilerine yeni master&#8217;\u0131n kim oldu\u011funu bildirirler.<\/li>\n<li><b>Avantajlar\u0131:<\/b> \u0130nsan m\u00fcdahalesi olmadan master sunucu ar\u0131zalar\u0131n\u0131 y\u00f6netir, b\u00f6ylece sistemin kesinti s\u00fcresini (downtime) minimuma indirir. Bu, tam otomatik bir y\u00fck devretme (failover) mekanizmas\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Redis-Cluster-ile-Veri-Parcalama-ve-Yatay-Olceklendirme-Sharding\"><\/span>Redis Cluster ile Veri Par\u00e7alama ve Yatay \u00d6l\u00e7eklendirme (Sharding)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Replikasyon ve Sentinel, y\u00fcksek eri\u015filebilirlik sa\u011flar ancak veri setinin tamam\u0131n\u0131n hala her sunucunun belle\u011fine s\u0131\u011fmas\u0131 gerekir. Veri seti tek bir makinenin RAM kapasitesini a\u015ft\u0131\u011f\u0131nda veya yazma trafi\u011fi tek bir master sunucunun CPU&#8217;sunu zorlad\u0131\u011f\u0131nda, Redis Cluster devreye girer.<\/p>\n<ul>\n<li><b>Nas\u0131l \u00c7al\u0131\u015f\u0131r:<\/b> Redis Cluster, verileri birden fazla sunucuya (node) otomatik olarak da\u011f\u0131tan bir yatay \u00f6l\u00e7eklendirme (sharding) \u00e7\u00f6z\u00fcm\u00fc sunar. Veri seti, 16384 adet &#8220;hash slot&#8221; ad\u0131 verilen mant\u0131ksal par\u00e7aya b\u00f6l\u00fcn\u00fcr ve bu slotlar k\u00fcmedeki farkl\u0131 master sunucular\u0131na atan\u0131r. Bir istemci bir anahtara eri\u015fmek istedi\u011finde, anahtar\u0131n hash de\u011ferine g\u00f6re hangi slot&#8217;a ve dolay\u0131s\u0131yla hangi sunucuya gitmesi gerekti\u011fini bilir.<\/li>\n<li><b>Avantajlar\u0131:<\/b>\n<ul>\n<li><b>Yatay \u00d6l\u00e7eklendirme:<\/b> Veri setini ve yazma\/okuma y\u00fck\u00fcn\u00fc birden \u00e7ok sunucuya da\u011f\u0131tarak sistemin toplam kapasitesini art\u0131r\u0131r. K\u00fcmeye yeni sunucular eklenerek kapasite kolayca art\u0131r\u0131labilir.<\/li>\n<li><b>Y\u00fcksek Eri\u015filebilirlik:<\/b> Her master sunucunun kendi slave&#8217;leri olabilir. Bir master \u00e7\u00f6kt\u00fc\u011f\u00fcnde, Sentinel&#8217;e benzer \u015fekilde, onun slave&#8217;i otomatik olarak yerine ge\u00e7er, b\u00f6ylece k\u00fcmenin bir par\u00e7as\u0131n\u0131n kayb\u0131 t\u00fcm sistemi etkilemez.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Redis Cluster, hem \u00f6l\u00e7eklenebilirlik hem de y\u00fcksek eri\u015filebilirlik sorunlar\u0131na entegre bir \u00e7\u00f6z\u00fcm sunar ve b\u00fcy\u00fck \u00f6l\u00e7ekli Redis da\u011f\u0131t\u0131mlar\u0131 i\u00e7in standart haline gelmi\u015ftir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Redis-Sunucusunu-Izleme-Monitoring-ve-Bakim\"><\/span>Redis Sunucusunu \u0130zleme (Monitoring) ve Bak\u0131m<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis sunucusunun \u00fcretim ortam\u0131nda sa\u011fl\u0131kl\u0131, performansl\u0131 ve kararl\u0131 bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in d\u00fczenli izleme ve bak\u0131m faaliyetleri hayati \u00f6nem ta\u015f\u0131r. Redis, sunucunun i\u00e7 durumu hakk\u0131nda zengin bilgi sa\u011flayan ve olas\u0131 sorunlar\u0131 te\u015fhis etmeye yard\u0131mc\u0131 olan yerle\u015fik komutlar sunar. Bu ara\u00e7lar\u0131 etkin bir \u015fekilde kullanmak, performans darbo\u011fazlar\u0131n\u0131 erkenden tespit etmenize ve sistemin genel sa\u011fl\u0131\u011f\u0131n\u0131 koruman\u0131za olanak tan\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"INFO-Komutu-ile-Detayli-Sunucu-Bilgileri-Alma\"><\/span>`INFO` Komutu ile Detayl\u0131 Sunucu Bilgileri Alma<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`INFO` komutu, Redis sunucusunun mevcut durumu hakk\u0131nda kapsaml\u0131 bilgi ve istatistikler sunan en \u00f6nemli izleme arac\u0131d\u0131r. Bu komut, sunucu, istemciler, bellek, kal\u0131c\u0131l\u0131k, istatistikler, replikasyon, CPU ve k\u00fcme gibi bir\u00e7ok farkl\u0131 b\u00f6l\u00fcme ayr\u0131lm\u0131\u015f y\u00fczlerce metrik d\u00f6nd\u00fcr\u00fcr.<br \/>\n<code>redis-cli INFO<\/code><br \/>\nBaz\u0131 \u00f6nemli metrikler \u015funlard\u0131r:<\/p>\n<ul>\n<li><b>`used_memory_human`<\/b>: Redis taraf\u0131ndan kullan\u0131lan toplam bellek miktar\u0131n\u0131 insan taraf\u0131ndan okunabilir formatta g\u00f6sterir.<\/li>\n<li><b>`connected_clients`<\/b>: Sunucuya anl\u0131k olarak ba\u011fl\u0131 olan istemci say\u0131s\u0131.<\/li>\n<li><b>`instantaneous_ops_per_sec`<\/b>: Saniye ba\u015f\u0131na anl\u0131k olarak i\u015flenen komut say\u0131s\u0131.<\/li>\n<li><b>`keyspace_hits`<\/b> ve <b>`keyspace_misses`<\/b>: \u00d6nbellek isabet ve \u0131skalama oran\u0131n\u0131 hesaplamak i\u00e7in kullan\u0131l\u0131r. Y\u00fcksek bir isabet oran\u0131, \u00f6nbelle\u011fin etkili \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/li>\n<li><b>`latest_fork_usec`<\/b>: RDB veya AOF yeniden yazma i\u015flemleri i\u00e7in en son `fork()` sistem \u00e7a\u011fr\u0131s\u0131n\u0131n ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc mikrosaniye cinsinden g\u00f6sterir. Y\u00fcksek de\u011ferler bellek sorunlar\u0131na i\u015faret edebilir.<\/li>\n<\/ul>\n<p>`INFO` komutunun \u00e7\u0131kt\u0131s\u0131, Prometheus gibi izleme sistemleriyle entegre edilerek zaman i\u00e7indeki e\u011filimleri g\u00f6zlemlemek i\u00e7in kullan\u0131labilir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"MONITOR-Komutu-ile-Komutlari-Gercek-Zamanli-Izleme\"><\/span>`MONITOR` Komutu ile Komutlar\u0131 Ger\u00e7ek Zamanl\u0131 \u0130zleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`MONITOR` komutu, bir hata ay\u0131klama arac\u0131d\u0131r ve Redis sunucusuna gelen t\u00fcm komutlar\u0131 ger\u00e7ek zamanl\u0131 olarak bir ak\u0131\u015f halinde g\u00f6sterir. Bu, uygulaman\u0131z\u0131n Redis ile nas\u0131l etkile\u015fimde bulundu\u011funu anlamak, beklenmedik komutlar\u0131 tespit etmek veya performans sorunlar\u0131n\u0131 ara\u015ft\u0131rmak i\u00e7in son derece kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n<code><br \/>\nredis-cli MONITOR<br \/>\nOK<br \/>\n1678886400.123456 [0 127.0.0.1:54321] \"SET\" \"mykey\" \"myvalue\"<br \/>\n1678886401.654321 [0 127.0.0.1:54321] \"GET\" \"mykey\"<br \/>\n<\/code><br \/>\n<b>Uyar\u0131:<\/b> `MONITOR` komutu, y\u00fcksek trafikli bir sunucuda ciddi performans d\u00fc\u015f\u00fc\u015flerine neden olabilir. Bu nedenle, sadece k\u0131sa s\u00fcreli hata ay\u0131klama seanslar\u0131 i\u00e7in ve dikkatli bir \u015fekilde kullan\u0131lmal\u0131d\u0131r. \u00dcretim ortam\u0131nda s\u00fcrekli olarak \u00e7al\u0131\u015ft\u0131r\u0131lmamal\u0131d\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"SLOWLOG-ile-Yavas-Calisan-Komutlari-Tespit-Etme\"><\/span>`SLOWLOG` ile Yava\u015f \u00c7al\u0131\u015fan Komutlar\u0131 Tespit Etme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis&#8217;in performans\u0131 genellikle komutlar\u0131n ne kadar s\u00fcrede y\u00fcr\u00fct\u00fcld\u00fc\u011f\u00fcne ba\u011fl\u0131d\u0131r. `SLOWLOG` \u00f6zelli\u011fi, belirtilen bir s\u00fcreden daha uzun s\u00fcren komutlar\u0131 kaydeden bir mekanizmad\u0131r. Bu, performans darbo\u011fazlar\u0131na neden olan verimsiz komutlar\u0131 (\u00f6rne\u011fin, b\u00fcy\u00fck koleksiyonlar \u00fczerinde \u00e7al\u0131\u015fan `KEYS` veya `LRANGE` gibi komutlar) bulmak i\u00e7in paha bi\u00e7ilmezdir.<br \/>\n`redis.conf` dosyas\u0131nda `slowlog-log-slower-than` direktifi ile e\u015fik de\u011feri (mikrosaniye cinsinden) belirlenir. \u00d6rne\u011fin, 10000 mikrosaniyeden (10 milisaniye) daha uzun s\u00fcren komutlar\u0131 kaydetmek i\u00e7in:<br \/>\n<code>slowlog-log-slower-than 10000<\/code><br \/>\nKaydedilen yava\u015f komutlar\u0131 g\u00f6rmek i\u00e7in `SLOWLOG GET` komutu kullan\u0131l\u0131r:<br \/>\n<code><br \/>\nredis-cli SLOWLOG GET 10 # En son 10 yava\u015f komutu getir<br \/>\n<\/code><br \/>\nBu komut, komutun ne zaman y\u00fcr\u00fct\u00fcld\u00fc\u011f\u00fc, ne kadar s\u00fcrd\u00fc\u011f\u00fc ve komutun kendisi hakk\u0131nda bilgi verir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Performans-Optimizasyonu-Icin-Ipuclari\"><\/span>Performans Optimizasyonu \u0130\u00e7in \u0130pu\u00e7lar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis sunucunuzdan en iyi performans\u0131 almak i\u00e7in dikkat etmeniz gereken baz\u0131 genel pratikler \u015funlard\u0131r:<\/p>\n<ul>\n<li><b>B\u00fcy\u00fck Koleksiyonlardan Ka\u00e7\u0131n\u0131n:<\/b> Tek bir hash, liste veya k\u00fcme i\u00e7inde milyonlarca eleman tutmak yerine, verilerinizi daha k\u00fc\u00e7\u00fck koleksiyonlara b\u00f6lmeyi d\u00fc\u015f\u00fcn\u00fcn.<\/li>\n<li><b>Pipeline Kullan\u0131m\u0131:<\/b> \u00c7ok say\u0131da komutu art arda g\u00f6ndermeniz gerekiyorsa, her komut i\u00e7in a\u011f gidi\u015f-d\u00f6n\u00fc\u015f s\u00fcresini beklemek yerine &#8220;pipelining&#8221; tekni\u011fini kullan\u0131n. Bu, komutlar\u0131 toplu olarak sunucuya g\u00f6nderir ve yan\u0131tlar\u0131 tek seferde al\u0131r, bu da a\u011f gecikmesini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/li>\n<li><b>Verimsiz Komutlara Dikkat Edin:<\/b> \u00dcretim ortam\u0131nda `KEYS *` gibi t\u00fcm anahtar alan\u0131n\u0131 tarayan komutlar\u0131 kullanmaktan ka\u00e7\u0131n\u0131n. Bunun yerine `SCAN` komutunu tercih edin.<\/li>\n<li><b>Ba\u011flant\u0131lar\u0131 Y\u00f6netin:<\/b> Uygulaman\u0131zda bir ba\u011flant\u0131 havuzu (connection pool) kullanarak her i\u015flem i\u00e7in yeni bir ba\u011flant\u0131 a\u00e7ma ve kapama maliyetinden kurtulun.<\/li>\n<li><b>Bellek Optimizasyonu:<\/b> Veri yap\u0131lar\u0131n\u0131z\u0131 verimli kullan\u0131n. \u00d6rne\u011fin, k\u00fc\u00e7\u00fck hash&#8217;ler, bellek a\u00e7\u0131s\u0131ndan \u00f6zel olarak optimize edilmi\u015ftir. Gereksiz verileri Redis&#8217;te tutmaktan ka\u00e7\u0131n\u0131n.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Redis-Hosting-ve-Yonetimi-Icin-Neden-IHS-Telekomu-Tercih-Etmelisiniz\"><\/span>Redis Hosting ve Y\u00f6netimi \u0130\u00e7in Neden \u0130HS Telekom&#8217;u Tercih Etmelisiniz?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Redis kurulumu, yap\u0131land\u0131rmas\u0131, g\u00fcvenli\u011fi ve bak\u0131m\u0131, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli ve kritik uygulamalar i\u00e7in ciddi bir uzmanl\u0131k ve zaman gerektirir. Altyap\u0131 y\u00f6netimiyle u\u011fra\u015fmak yerine tamamen uygulaman\u0131za odaklanmak istiyorsan\u0131z, profesyonel bir hosting sa\u011flay\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015fmak en do\u011fru se\u00e7enektir. \u0130HS Telekom, Redis gibi y\u00fcksek performansl\u0131 teknolojiler i\u00e7in optimize edilmi\u015f, g\u00fcvenilir ve \u00f6l\u00e7eklenebilir <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/\" target=\"_blank\">sunucu<\/a> \u00e7\u00f6z\u00fcmleri sunarak i\u015finizi kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>\u0130HS Telekom&#8217;un sundu\u011fu g\u00fc\u00e7l\u00fc <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/vds-sunucu.html\" target=\"_blank\">VDS<\/a> ve <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/vps-server.html\" target=\"_blank\">VPS<\/a> sunucu se\u00e7enekleri, Redis&#8217;in ihtiya\u00e7 duydu\u011fu y\u00fcksek RAM ve h\u0131zl\u0131 i\u015flem g\u00fcc\u00fcn\u00fc garanti eder. Modern donan\u0131mlar ve y\u00fcksek h\u0131zl\u0131 a\u011f altyap\u0131s\u0131 sayesinde, Redis&#8217;in d\u00fc\u015f\u00fck gecikme s\u00fcresi avantaj\u0131ndan sonuna kadar faydalan\u0131rs\u0131n\u0131z. Sunucular\u0131m\u0131z, en g\u00fcncel g\u00fcvenlik yamalar\u0131 ve en iyi pratikler do\u011frultusunda yap\u0131land\u0131r\u0131larak verilerinizin g\u00fcvenli\u011fini en \u00fcst d\u00fczeyde tutar. Ayr\u0131ca, 7\/24 teknik destek ekibimiz, olas\u0131 sorunlarda h\u0131zl\u0131 ve etkili \u00e7\u00f6z\u00fcmler sunarak sisteminizin kesintisiz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>\u0130\u015fletmeniz b\u00fcy\u00fcd\u00fck\u00e7e artan trafik ve veri y\u00fck\u00fcn\u00fc kar\u015f\u0131lamak i\u00e7in kaynaklar\u0131n\u0131z\u0131 kolayca art\u0131rabilirsiniz. \u0130HS Telekom&#8217;un esnek <a href=\"https:\/\/www.ihs.com.tr\/web-hosting\/\" target=\"_blank\">hosting<\/a> \u00e7\u00f6z\u00fcmleri, ihtiya\u00e7lar\u0131n\u0131za g\u00f6re \u00f6l\u00e7eklenerek maliyet avantaj\u0131 sa\u011flar. Redis altyap\u0131n\u0131z\u0131 \u0130HS Telekom&#8217;a emanet ederek, sunucu y\u00f6netimi, yedekleme, izleme ve g\u00fcvenlik gibi karma\u015f\u0131k operasyonel y\u00fcklerden kurtulur, enerjinizi ve kaynaklar\u0131n\u0131z\u0131 as\u0131l i\u015finize, yani yenilik\u00e7i uygulamalar geli\u015ftirmeye y\u00f6nlendirebilirsiniz. G\u00fc\u00e7l\u00fc altyap\u0131, uzman destek ve rekabet\u00e7i fiyatlarla projeniz i\u00e7in en sa\u011flam temeli \u0130HS Telekom&#8217;da bulabilirsiniz. Web siteniz i\u00e7in bir <a href=\"https:\/\/www.ihs.com.tr\/domain\/alan-adi-domain-tescili.html\" target=\"_blank\">alan ad\u0131<\/a> tescil ederek ilk ad\u0131m\u0131 atabilir, pop\u00fcler i\u00e7erik y\u00f6netim sistemleri i\u00e7in optimize edilmi\u015f <a href=\"https:\/\/www.ihs.com.tr\/web-hosting\/wordpress-hosting.html\" target=\"_blank\">WordPress hosting<\/a> paketlerimizi inceleyebilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modern web uygulamalar\u0131n\u0131n h\u0131z ve performans beklentilerini kar\u015f\u0131lamak i\u00e7in tasarlanm\u0131\u015f olan Redis, a\u00e7\u0131k kaynak kodlu, y\u00fcksek performansl\u0131 bir bellek i\u00e7i (in-memory) veri&hellip;<\/p>\n","protected":false},"author":3,"featured_media":16516,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[414],"tags":[],"class_list":["post-16515","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sunucu"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=16515"}],"version-history":[{"count":1,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16515\/revisions"}],"predecessor-version":[{"id":16517,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16515\/revisions\/16517"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media\/16516"}],"wp:attachment":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=16515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=16515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=16515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}