{"id":204,"date":"2009-10-24T18:47:57","date_gmt":"2009-10-24T18:47:57","guid":{"rendered":"http:\/\/newblog.mix1009.net\/?p=204"},"modified":"2009-10-24T18:47:57","modified_gmt":"2009-10-24T18:47:57","slug":"memcached%eb%a5%bc-%ec%9d%b4%ec%9a%a9%ed%95%b4%ec%84%9c-grace-%ea%b8%b0%eb%8a%a5-%ea%b5%ac%ed%98%84","status":"publish","type":"post","link":"https:\/\/mix1009.net\/?p=204","title":{"rendered":"memcached\ub97c \uc774\uc6a9\ud55c grace \uae30\ub2a5 \uad6c\ud604"},"content":{"rendered":"<p>Varnish Cache\uc758 grace \uae30\ub2a5\uc744 PHP\/memcached\ub85c \uad6c\ud604\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>grace \uae30\ub2a5\uc740 \ubc31\uc5d4\ub4dc \uc11c\ubc84\uac00 \uc8fd\ub354\ub77c\ub3c4, \uce90\uc2f1\ub418\uc5b4 \uc788\ub294 \uc815\ubcf4\ub85c \uc9c0\uc18d\uc801\uc778 \uc11c\ube44\uc2a4\uac00 \uac00\ub2a5\ud558\ub3c4\ub85d \ud558\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \uce90\uc2f1\ud560\ub54c \uc5ec\ubd84\uc758 \uc2dc\uac04(grace \uc2dc\uac04)\ub3d9\uc548 \ub354 \uce90\uc2dc\ub97c \uc720\uc9c0\ud558\uba70, \uce90\uc2f1 \uc2dc\uac04\uc774 \uc9c0\ub0ac\uc744\ub54c \ubc31\uc5d4\ub4dc\uc5d0 \uc694\uccad\uc774 \ud55c\ubc88\ub9cc \uc804\ub2ec\ub418\uac8c \ud558\uace0, \ub098\uba38\uc9c0 \uc694\uccad\uc5d0 \ub300\ud574\uc11c\ub294 \uc6b0\uc120\uc801\uc73c\ub85c \uadf8 \uc804\uc5d0 \uc788\ub358 \uce90\uc2dc\ub85c \uc11c\ube44\uc2a4\ub97c \ud558\ub3c4\ub85d \ud558\uc5ec \ubc31\uc5d4\ub4dc \uc11c\ubc84\uc758 \ubd80\ud558\ub97c \uc904\uc77c\uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n<p>\ud604\uc7ac\ub294 memcached\uc5d0\uc11c expire \ub418\uba74\uc11c \ub3d9\uc2dc\uc5d0 \uc694\uccad\uc774 \ubc1c\uc0dd\ud558\ub294\ub370, grace \uae30\ub2a5\uc744 \uad6c\ud604\ud558\uba74 \uc624\ub798\uac78\ub9ac\ub294 \ud398\uc774\uc9c0 \uc0dd\uc131\ud560\ub54c \ud070 \ud6a8\uacfc\ub97c \ubc1c\ud718\ud560\uc218 \uc788\uc744\uac70\ub77c \uae30\ub300\ub429\ub2c8\ub2e4.<\/p>\n<p>PHP \uad6c\ud604\uc740 \uac04\ub2e8\ud569\ub2c8\ub2e4. \uc6d0\ub798 key,value \ud56d\ubaa9\uc758 expire<br \/>\n\uc2dc\uac04\uc744 grace \uc2dc\uac04 \ub9cc\ud07c \ub298\ub9ac\uace0, \ub2e4\ub978 \ud0a4(key+&#8221;_s&#8221;)\uc5d0 expire \uc2dc\uac04\ub3d9\uc548 \uc0c1\ud0dc\uac12\uc744 \uc785\ub825\ud574\ub450\uba74, \uc5b4\ub835\uc9c0 \uc54a\uac8c grace \uae30\ub2a5\uc744<br \/>\n\uad6c\ud604\ud560\uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucd08\uae30\uc5d0 \uce90\uc2dc\uc5d0 \uc5c6\uc744\ub54c\ub294 \ubc31\uc5d4\ub4dc\uc5d0 \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \uc694\uccad\uc774 \ub4e4\uc5b4\uac08\uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ubbf8 \uc694\uccad\uc774 \ucc98\ub9ac\ub418\uace0 \uc788\uc744\ub54c(state=&#8221;G&#8221;), \uc77c\uc815\uc2dc\uac04\ub3d9\uc548 \uc8fc\uae30\uc801\uc73c\ub85c memcached\ub97c \uc870\ud68c\ud574\uc11c key\uac00 \uc788\uc744\ub54c\uae4c\uc9c0 \ub300\uae30\ud558\ub294 \ubc29\ubc95\uc73c\ub85c \uc5b4\ub290\uc815\ub3c4 \ud574\uacb0 \uac00\ub2a5\ud560 \uac70\ub77c \uc0dd\uac01\ud558\uc9c0\ub9cc \uad6c\ud604\uc740 \ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n<p>[CODE type=php]<br \/>\n array(&#8216;127.0.0.1:11211&#8217;), &#8216;debug&#8217; =&gt; false, &#8216;persistant&#8217; =&gt; false));<\/p>\n<p>    function generate_value($key) {<br \/>\n        sleep(5);<br \/>\n        return &#8220;VALUE&#8221;. $key;<br \/>\n    }<\/p>\n<p>    function get_value($key) {<br \/>\n        global $mc;<br \/>\n        $expire = 60;<br \/>\n        $grace_timeout = 600;<br \/>\n        $generation_timeout = 10;<\/p>\n<p>        $state = $mc-&gt;get($key.&#8221;_s&#8221;);<br \/>\n        \/\/echo(&#8220;state=$state<br \/>\\n&#8221;);<br \/>\n        if ($state == &#8220;C&#8221; || $state == &#8220;G&#8221;) {<br \/>\n            $value = $mc-&gt;get($key);<br \/>\n            if ($value) {<br \/>\n                \/\/echo(&#8220;retreive key=$key<br \/>\\n&#8221;);<br \/>\n                return $value;<br \/>\n            }<br \/>\n        }<\/p>\n<p>        $mc-&gt;set($key.&#8221;_s&#8221;, &#8220;G&#8221;, $generation_timeout); \/\/ state: Generating<br \/>\n        $value = generate_value($key);<br \/>\n        $mc-&gt;set($key, $value, $expire + $grace_timeout);<br \/>\n        $mc-&gt;set($key.&#8221;_s&#8221;, &#8220;C&#8221;, $expire); \/\/ state: Cached<br \/>\n        \/\/echo(&#8220;insert key=$key<br \/>\\n&#8221;);<\/p>\n<p>        return $value;<br \/>\n    }<\/p>\n<p>    get_value(&#8220;hahaha&#8221;);<br \/>\n?&gt;<\/p>\n<p>[\/CODE]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Varnish Cache\uc758 grace \uae30\ub2a5\uc744 PHP\/memcached\ub85c \uad6c\ud604\ud588\uc2b5\ub2c8\ub2e4. grace \uae30\ub2a5\uc740 \ubc31\uc5d4\ub4dc \uc11c\ubc84\uac00 \uc8fd\ub354\ub77c\ub3c4, \uce90\uc2f1\ub418\uc5b4 \uc788\ub294 \uc815\ubcf4\ub85c \uc9c0\uc18d\uc801\uc778 \uc11c\ube44\uc2a4\uac00 \uac00\ub2a5\ud558\ub3c4\ub85d \ud558\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \uce90\uc2f1\ud560\ub54c \uc5ec\ubd84\uc758 \uc2dc\uac04(grace \uc2dc\uac04)\ub3d9\uc548 \ub354 \uce90\uc2dc\ub97c \uc720\uc9c0\ud558\uba70, \uce90\uc2f1 \uc2dc\uac04\uc774 \uc9c0\ub0ac\uc744\ub54c \ubc31\uc5d4\ub4dc\uc5d0 \uc694\uccad\uc774 \ud55c\ubc88\ub9cc \uc804\ub2ec\ub418\uac8c \ud558\uace0, \ub098\uba38\uc9c0 \uc694\uccad\uc5d0 \ub300\ud574\uc11c\ub294 \uc6b0\uc120\uc801\uc73c\ub85c \uadf8 \uc804\uc5d0 \uc788\ub358 \uce90\uc2dc\ub85c \uc11c\ube44\uc2a4\ub97c \ud558\ub3c4\ub85d \ud558\uc5ec \ubc31\uc5d4\ub4dc \uc11c\ubc84\uc758 \ubd80\ud558\ub97c \uc904\uc77c\uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud604\uc7ac\ub294 memcached\uc5d0\uc11c expire \ub418\uba74\uc11c \ub3d9\uc2dc\uc5d0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[19],"tags":[203,181,204],"_links":{"self":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/204"}],"collection":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=204"}],"version-history":[{"count":0,"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/204\/revisions"}],"wp:attachment":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}