﻿
{"id":15055,"date":"2020-04-10T17:40:41","date_gmt":"2020-04-10T17:40:41","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=15055"},"modified":"2020-04-10T17:40:41","modified_gmt":"2020-04-10T17:40:41","slug":"redis-yazi-serisi-2-in-memory-caching-nedir","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/redis-yazi-serisi-2-in-memory-caching-nedir\/","title":{"rendered":"Redis Yaz\u0131 Serisi 2 &#8211; In Memory Caching Nedir?"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/redis-yazi-dizisi\/\" rel=\"noopener noreferrer\" target=\"_blank\">Redis yaz\u0131 serimizin<\/a> bu ikinci makalesinde <em>In-Memory Caching<\/em>&#8216;in ne oldu\u011funa dair konu\u015facak ve gerekli irdelemelerde bulunaca\u011f\u0131z.<\/p>\n<h4>In-Memory Caching Nedir?<\/h4>\n<p>Yo\u011fun istek neticesinde veritaban\u0131ndan \u00e7ekilip kullan\u0131c\u0131lara sunulan stabil datalar\u0131n ortaya \u00e7\u0131karm\u0131\u015f olduklar\u0131 maliyeti minimize etmek i\u00e7in uygulamay\u0131 bar\u0131nd\u0131ran sunucunun memorysinde(bellek)(RAM) ge\u00e7ici olarak kaydedilip, kullan\u0131lmas\u0131d\u0131r. <\/p>\n<h4>Nas\u0131l \u00c7al\u0131\u015fmaktad\u0131r?<\/h4>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir.jpg\" alt=\"Redis Yaz\u0131 Serisi 2 - In Memory Caching Nedir?\" width=\"359\" height=\"285\" class=\"alignleft size-full wp-image-15059\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir.jpg 359w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-300x238.jpg 300w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><\/a><br \/>\nKullan\u0131c\u0131da gelen istek \u00fczerine g\u00f6sterilecek data ilk olarak cache \u00fczerinde kontrol edilir ve varsa buradan \u00e7ekilip g\u00f6nderilir. E\u011fer cache bo\u015f ise ilgili data veritaban\u0131ndan elde edilerek \u00f6ncelikle cache&#8217;e kaydedilir, ard\u0131ndan kullan\u0131c\u0131ya g\u00f6nderilir. Bu s\u00fcre\u00e7ten sonraki yap\u0131lan t\u00fcm isteklere cache \u00fczerinden data iletilecektir. Tabi ki de burada cachelenecek data miktar\u0131 sunucunun RAM \u00f6zelliklerine ve \u00f6zellikle kapasitesine ba\u011fl\u0131d\u0131r.<\/p>\n<h4>In-Memory Cache&#8217;in Olas\u0131 Handikab\u0131<\/h4>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-300x271.png\" alt=\"Redis Yaz\u0131 Serisi 2 - In Memory Caching Nedir?\" width=\"300\" height=\"271\" class=\"alignright size-medium wp-image-15069\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-300x271.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir.png 606w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nBir uygulaman\u0131n ayn\u0131 veritaban\u0131ndan beslenecek \u015fekilde birden fazla aya\u011fa kald\u0131r\u0131lan instance&#8217;lar\u0131nda e\u011fer ki In-Memory Cache&#8217;i kullan\u0131yorsan\u0131z olas\u0131 veri tutars\u0131zl\u0131\u011f\u0131 ihtimali s\u00f6z konusu olabilmektedir.<\/p>\n<p>\u015e\u00f6yle ki; yandaki g\u00f6rseli incelerseniz bir uygulaman\u0131n A ve B olmak \u00fczere ayn\u0131 veritaban\u0131ndan beslenen instancelar\u0131n\u0131 g\u00f6rmektesiniz. Kullan\u0131c\u0131dan gelen istekleri load balancer yo\u011funlu\u011fa g\u00f6re bu instancelar aras\u0131nda payla\u015ft\u0131\u011f\u0131n\u0131 ve herhangi bir (T) zaman\u0131nda gelen istek \u00fczerine A&#8217;n\u0131n ve (T + 15) zaman\u0131nda gelen istek \u00fczerine B&#8217;nin in-memory caching yapt\u0131\u011f\u0131n\u0131 varsayal\u0131m. Bu caching i\u015flemi neticesinde veritaban\u0131nda herhangi bir modifikasyon s\u00f6z konusu olabilme ihtimalini hesaba katarak, (T + 30). zaman\u0131nda bu instancelar\u0131n her ikisine de g\u00f6z at\u0131ld\u0131\u011f\u0131nda ayn\u0131 veri g\u00f6zlemleniyorsa s\u0131k\u0131nt\u0131 olmayacakt\u0131r. Lakin farkl\u0131 veriler mevzu bahisse i\u015fte burada bir handikap s\u00f6z konusu olacakt\u0131r. D\u00fc\u015f\u00fcnsenize! Load balancer&#8217;\u0131n A instance&#8217;\u0131na y\u00f6nlendirdi\u011fi kullan\u0131c\u0131 &#8220;Elma&#8221; g\u00f6r\u00fcrken, B instance&#8217;\u0131ndaki ise veritaban\u0131ndaki veriler modifiye edildi\u011fi i\u00e7in &#8220;Armut&#8221; g\u00f6r\u00fcyor. <\/p>\n<p>\u0130\u015fte in-memory caching kullan\u0131ld\u0131\u011f\u0131nda olas\u0131 olabilecek veri tutars\u0131zl\u0131klar\u0131 bu durumlarda ceyran etmektedir. Tabi ki de in-memory caching yap\u0131lan uygulaman\u0131n tek bir instance&#8217;\u0131 \u00fczerinden yay\u0131n ger\u00e7ekle\u015ftiriliyorsa ayn\u0131 ayna t\u00fcm kullan\u0131c\u0131larda sadece o instance \u00fczerinden i\u015flemlerini ger\u00e7ekle\u015ftirece\u011finden dolay\u0131 bu handikap s\u00f6z konusu olmayacakt\u0131r.<\/p>\n<p><strong>Peki bu handikab\u0131 nas\u0131l \u00e7\u00f6zebiliriz?<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-1-300x271.jpg\" alt=\"Redis Yaz\u0131 Serisi 2 - In Memory Caching Nedir?\" width=\"300\" height=\"271\" class=\"alignleft size-medium wp-image-15079\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-1-300x271.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-2-In-Memory-Caching-Nedir-1.jpg 452w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nBu handikaba %100 olmasada k\u0131smi olarak Session Sticky(Yap\u0131\u015fkan Session) ile \u00e7\u00f6z\u00fcm getirilebilmektedir. \u015e\u00f6yle ki; Load balancer&#8217;a &#8216;X kullan\u0131c\u0131s\u0131ndan gelen iste\u011fi A instance&#8217;\u0131na g\u00f6nderdiysen, bunda sonraki t\u00fcm X&#8217;den gelenleri A instance\u0131na g\u00f6nder&#8217; diyerek var olan veri tutars\u0131zl\u0131\u011f\u0131n\u0131 k\u0131smi olarak \u00e7\u00f6zm\u00fc\u015f olabiliriz. Art\u0131k t\u00fcm kullan\u0131c\u0131lar sadece ilk giri\u015f yapt\u0131klar\u0131 instance \u00fczerinden i\u015flem yapabileceklerinden dolay\u0131 instancedan instance&#8217;a fark eden veri tutars\u0131zl\u0131\u011f\u0131n\u0131n fark\u0131na varamayacak ve bizde b\u00f6ylece esas\u0131nda farkl\u0131 instancelarda devam eden bu tutars\u0131zl\u0131\u011f\u0131n <u>s\u00f6zde<\/u> kullan\u0131c\u0131 seviyesinde \u00fcst\u00fcn\u00fc \u00f6rtm\u00fc\u015f olaca\u011f\u0131z. Tabi ki de bu y\u00f6ntem tavsiye niteli\u011finde bir \u00e7\u00f6z\u00fcm olmayacakt\u0131r!<\/p>\n<p>Bir di\u011fer y\u00f6ntem olarak bu tarz farkl\u0131 instancelar \u00fczerinden yap\u0131lan yay\u0131nlarda t\u00fcm kullan\u0131c\u0131lara cache&#8217;den en tutarl\u0131 veriyi g\u00f6sterebilmek i\u00e7in cachelerin merkezi bir yere kaydedilmesi gerekecektir. Bunun i\u00e7in de bir sonraki yaz\u0131m\u0131z\u0131n konusu olacak olan Distributed Caching kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p>Nihai olarak, in-mermory cache&#8217;in ne oldu\u011funa dair tam teferruatl\u0131 teoriye kalem t\u00fcketti\u011fimizin kanaatindeyim. Bir \u00f6nceki c\u00fcmlede bahsetti\u011fim gibi bir sonraki makalemizde Distributed Caching yap\u0131lanmas\u0131n\u0131n ne oldu\u011funa dair gerekli teorileri ortaya koyaca\u011f\u0131m\u0131z\u0131 tekrar hat\u0131rlat\u0131r\u0131m&#8230; O halde \u015fimdilik g\u00f6r\u00fc\u015fmek \u00fczere \ud83d\ude42<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Redis yaz\u0131 serimizin bu ikinci makalesinde In-Memory Caching&#8216;in ne oldu\u011funa dair konu\u015facak ve gerekli irdelemelerde bulunaca\u011f\u0131z. In-Memory Caching Nedir? Yo\u011fun istek neticesinde veritaban\u0131ndan \u00e7ekilip kullan\u0131c\u0131lara sunulan stabil datalar\u0131n ortaya \u00e7\u0131karm\u0131\u015f olduklar\u0131 maliyeti minimize&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":15059,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3383],"tags":[3399,2866,3384,3397,3398],"class_list":["post-15055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-redis","tag-in-memory-caching-nedir","tag-in-memory-cache","tag-redis","tag-session-sticky","tag-yapiskan-session"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=15055"}],"version-history":[{"count":29,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15055\/revisions"}],"predecessor-version":[{"id":15087,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15055\/revisions\/15087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/15059"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=15055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=15055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=15055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}