{"id":1689,"date":"2026-05-11T10:53:23","date_gmt":"2026-05-11T10:53:23","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1689"},"modified":"2026-08-31T07:32:43","modified_gmt":"2026-08-31T07:32:43","slug":"redis-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1689","title":{"rendered":"Redis \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Redis\ub294 \uba54\ubaa8\ub9ac \uae30\ubc18\uc758 Key-Value \ub370\uc774\ud130 \uc800\uc7a5\uc18c\ub2e4. \ub370\uc774\ud130\ub97c \uc8fc\ub85c RAM\uc5d0 \uc800\uc7a5\ud558\uae30 \ub54c\ubb38\uc5d0 \uc77c\ubc18\uc801\uc778 \ub514\uc2a4\ud06c \uae30\ubc18 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ubcf4\ub2e4 \ub9e4\uc6b0 \ube60\ub974\uac8c \ub370\uc774\ud130\ub97c \uc77d\uace0 \uc4f8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\uc74c\uc5d0\ub294 \ub2e8\uc21c\ud55c \uce90\uc2dc\ucc98\ub7fc \ub9ce\uc774 \uc0ac\uc6a9\ub410\uc9c0\ub9cc, \uc9c0\uae08\uc740 \uce90\uc2dc\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc138\uc158 \uc800\uc7a5, \uc778\uc99d \uc815\ubcf4, \uc2e4\uc2dc\uac04 \uc0c1\ud0dc \uad00\ub9ac, Pub\/Sub, \ubd84\uc0b0 \ub77d, \uc791\uc5c5 \ud050 \ub4f1 \uc5ec\ub7ec \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \uad6c\uc870\ub294 \ub2e8\uc21c\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; Redis -&gt; Key \/ Value\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"user:1001\" -&gt; {\n    \"name\": \"Kim\",\n    \"level\": 30\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL\uc774\ub098 MySQL\ucc98\ub7fc \ud14c\uc774\ube14\uc744 \uc911\uc2ec\uc73c\ub85c \ub370\uc774\ud130\ub97c \ubaa8\ub378\ub9c1\ud558\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640\ub294 \uc131\uaca9\uc774 \ub2e4\ub974\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \uc774\ud574\ud560 \ub54c\ub294 <strong>\ube60\ub978 \uba54\ubaa8\ub9ac \uc800\uc7a5\uc18c\ub77c\ub294 \ud2b9\uc131\uacfc \ub2e4\uc591\ud55c \uc790\ub8cc\uad6c\uc870\ub97c \uc774\uc6a9\ud574\uc11c \uc5b4\ub5a4 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294\uc9c0<\/strong>\ub97c \ubcf4\ub294 \uac8c \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis\uc758 \uae30\ubcf8 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uae30\ubcf8\uc801\uc73c\ub85c Key\ub97c \uc774\uc6a9\ud574\uc11c Value\ub97c \ucc3e\ub294\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Key -&gt; Value\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"user:1001\" -&gt; \"Kim\"\n\"user:1002\" -&gt; \"Lee\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac12\uc744 \uc800\uc7a5\ud558\uace0 \uac00\uc838\uc624\ub294 \uac83\ub3c4 \uac04\ub2e8\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET user:1001 \"Kim\"\n\nGET user:1001\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Kim\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\uc5d0\uc11c\ub294 Redis \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \ud1b5\ud574 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>await redis.set('user:1001', 'Kim');\n\nconst name = await redis.get('user:1001');\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ub2e8\uc21c\ud55c \uad6c\uc870\uac00 Redis\uc758 \uae30\ubcf8\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis\uac00 \ube60\ub978 \uc774\uc720<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uac00 \ube60\ub978 \uac00\uc7a5 \ud070 \uc774\uc720\ub294 \ub370\uc774\ud130\ub97c \uba54\ubaa8\ub9ac\uc5d0 \uc800\uc7a5\ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ub370\uc774\ud130\ub97c \uc601\uc18d\uc801\uc778 \uc800\uc7a5 \uc7a5\uce58\uc5d0 \uc800\uc7a5\ud558\uace0 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc77d\uc5b4\uc624\ub294 \uacfc\uc815\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uc8fc\ub85c RAM\uc744 \ub370\uc774\ud130 \uc811\uadfc\uc758 \uc911\uc2ec\uc73c\ub85c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; MySQL \/ PostgreSQL -&gt; Disk \/ Memory\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; Redis -&gt; Memory\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud615\ud0dc\ub85c \ub9e4\uc6b0 \ube60\ub974\uac8c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uba54\ubaa8\ub9ac\ub294 \ub514\uc2a4\ud06c\ubcf4\ub2e4 \ube44\uc6a9\uc774 \ube44\uc2f8\uace0 \uc6a9\ub7c9\ub3c4 \uc81c\ud55c\uc801\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c Redis\ub97c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c \uc601\uad6c\uc801\uc73c\ub85c \uc800\uc7a5\ud558\ub294 \uba54\uc778 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ucc98\ub7fc \uc0ac\uc6a9\ud558\ub294 \uac83\uc740 \ubaa9\uc801\uc5d0 \ub530\ub77c \uc2e0\uc911\ud558\uac8c \ud310\ub2e8\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis\uc758 \uc790\ub8cc\uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \ub2e8\uc21c\ud55c Key-Value \uc800\uc7a5\uc18c\ub77c\uace0\ub9cc \uc774\ud574\ud558\uba74 \uc2e4\uc81c \uae30\ub2a5\uc744 \ub9ce\uc774 \ub193\uce58\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uc5ec\ub7ec \uc790\ub8cc\uad6c\uc870\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String\nHash\nList\nSet\nSorted Set\nStream\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \uc790\ub8cc\uad6c\uc870\uac00 \ud574\uacb0\ud558\ub294 \ubb38\uc81c\uac00 \ub2e4\ub974\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">String<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \uc790\ub8cc\uad6c\uc870\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET user:name \"Kim\"\nGET user:name\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb38\uc790\uc5f4\ubfd0 \uc544\ub2c8\ub77c \uc22b\uc790 \uac12\ub3c4 \uc800\uc7a5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET page:view 100\nINCR page:view\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ud2b9\uc131 \ub54c\ubb38\uc5d0 \uce74\uc6b4\ud130 \uad6c\ud604\uc5d0\ub3c4 \uc790\uc8fc \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc870\ud68c\uc218\ub97c \uad00\ub9ac\ud55c\ub2e4\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>article:100:view_count -&gt; 1520\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>INCR<\/code>\ub97c \uc774\uc6a9\ud574\uc11c \uc6d0\uc790\uc801\uc73c\ub85c \uc99d\uac00\uc2dc\ud0ac \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Hash<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hash\ub294 \ud558\ub098\uc758 Key \uc544\ub798 \uc5ec\ub7ec \ud544\ub4dc\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user:1001 -&gt; name \/ level \/ job\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Redis \uba85\ub839\uc73c\ub85c \ubcf4\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HSET user:1001 name \"Kim\"\nHSET user:1001 level 30\nHSET user:1001 job \"Warrior\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\ud68c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HGET user:1001 name\nHGET user:1001 level\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud55c \uac1d\uccb4 \ud615\ud0dc\uc758 \ub370\uc774\ud130\ub97c Redis\uc5d0 \uc800\uc7a5\ud560 \ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">List<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">List\ub294 \uc21c\uc11c\uac00 \uc788\ub294 \ubb38\uc790\uc5f4 \ubaa9\ub85d\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>queue -&gt; A -&gt; B -&gt; C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\ub97c \uc55e\uc774\ub098 \ub4a4\uc5d0 \ucd94\uac00\ud558\uace0 \uc81c\uac70\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud2b9\uc131\uc744 \uc774\uc6a9\ud558\uba74 \uac04\ub2e8\ud55c Queue\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Producer -&gt; Redis List -&gt; Consumer\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc791\uc5c5 \uc694\uccad\uc744 Redis List\uc5d0 \ub123\uace0 Worker\uac00 \ud558\ub098\uc529 \uaebc\ub0b4 \ucc98\ub9ac\ud558\ub294 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c \ubcf5\uc7a1\ud55c \uc791\uc5c5 \ud050\uac00 \ud544\uc694\ud558\ub2e4\uba74 Redis \uae30\ubc18\uc758 \ubcc4\ub3c4 Queue \uc2dc\uc2a4\ud15c\uc774\ub098 \uba54\uc2dc\uc9c0 \ube0c\ub85c\ucee4\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\ub3c4 \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Set<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Set\uc740 \uc911\ubcf5\ub418\uc9c0 \uc54a\ub294 \uac12\ub4e4\uc758 \uc9d1\ud569\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>online_users -&gt; 1001 \/ 1002 \/ 1003\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uc0ac\uc6a9\uc790\ub97c \uc5ec\ub7ec \ubc88 \ucd94\uac00\ud574\ub3c4 \ud558\ub098\ub9cc \uc720\uc9c0\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SADD online_users 1001\nSADD online_users 1001\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc\uc801\uc73c\ub85c <code>1001<\/code>\uc740 \ud55c \ubc88\ub9cc \uc874\uc7ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc628\ub77c\uc778 \uc0ac\uc6a9\uc790 \uad00\ub9ac, \ud0dc\uadf8 \uc9d1\ud569, \ud2b9\uc815 \uadf8\ub8f9\uc758 \uc0ac\uc6a9\uc790 \uad00\ub9ac \ub4f1\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Sorted Set<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sorted Set\uc740 \uac12\ub9c8\ub2e4 Score\ub97c \uac00\uc9c0\uace0 \uc810\uc218\uc5d0 \ub530\ub77c \uc815\ub82c\ud560 \uc218 \uc788\ub294 \uc790\ub8cc\uad6c\uc870\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>leaderboard -&gt; player:1001 \/ 5000\nleaderboard -&gt; player:1002 \/ 3200\nleaderboard -&gt; player:1003 \/ 2800\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784\uc758 \ub7ad\ud0b9 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ud2b9\ud788 \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ZADD leaderboard 5000 player:1001\nZADD leaderboard 3200 player:1002\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc810\uc218\ub97c \uae30\uc900\uc73c\ub85c \uc21c\uc704\ub97c \uc870\ud68c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ZREVRANGE leaderboard 0 9 WITHSCORES\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c Redis\uac00 \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \uc774\uc720 \uc911 \ud558\ub098\uac00 \uc774\ub7f0 \uc790\ub8cc\uad6c\uc870\ub97c \uc81c\uacf5\ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">TTL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \uae30\ub2a5\uc774 TTL(Time To Live)\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\uc5d0 \ub9cc\ub8cc \uc2dc\uac04\uc744 \uc124\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET session:1001 \"TOKEN\"\nEXPIRE session:1001 3600\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">1\uc2dc\uac04\uc774 \uc9c0\ub098\uba74 \ud574\ub2f9 Key\uac00 \ub9cc\ub8cc\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud55c \ubc88\uc5d0 \uc124\uc815\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET session:1001 \"TOKEN\" EX 3600\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">TTL\uc740 \uce90\uc2dc\ub098 \uc138\uc158\uc744 \uad6c\ud604\ud560 \ub54c \ud2b9\ud788 \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Cache -&gt; user:1001 -&gt; TTL 300\ucd08\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2dc\uac04\uc774 \uc9c0\ub098\uba74 Redis\uc5d0\uc11c \uc790\ub3d9\uc73c\ub85c \ub9cc\ub8cc\ub418\ubbc0\ub85c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc9c1\uc811 \uc0ad\uc81c\ud560 \ud544\uc694\uac00 \uc904\uc5b4\ub4e0\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uc758 \uac00\uc7a5 \ub300\ud45c\uc801\uc778 \uc0ac\uc6a9 \ubc29\ubc95\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 PostgreSQL\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \uac00\uc838\uc624\ub294 API\uac00 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Node.js -&gt; PostgreSQL -&gt; Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9e4\ubc88 DB\ub97c \uc870\ud68c\ud558\uba74 \uac19\uc740 \ub370\uc774\ud130\ub97c \ubc18\ubcf5\uc801\uc73c\ub85c \uc77d\uac8c \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \uce90\uc2dc\ub85c \uc0ac\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Node.js -&gt; Redis\nRedis Cache Hit -&gt; Response\nRedis Cache Miss -&gt; PostgreSQL -&gt; Redis -&gt; Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const key = `user:${userId}`;\n\nlet user = await redis.get(key);\n\nif (!user) {\n    user = await getUserFromDatabase(userId);\n\n    await redis.set(\n        key,\n        JSON.stringify(user),\n        { EX: 300 }\n    );\n}\n\nreturn JSON.parse(user);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uc5d0 \ub370\uc774\ud130\uac00 \uc788\uc73c\uba74 DB\uae4c\uc9c0 \uac00\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ud328\ud134\uc744 Cache-Aside\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cache Invalidation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uce90\uc2dc\ub97c \uc0ac\uc6a9\ud558\ub294 \uc21c\uac04 \uc0c8\ub85c\uc6b4 \ubb38\uc81c\uac00 \uc0dd\uae34\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6d0\ubcf8 DB\uc758 \ub370\uc774\ud130\uac00 \ubcc0\uacbd\ub410\ub294\ub370 Redis\uc5d0 \uc774\uc804 \ub370\uc774\ud130\uac00 \ub0a8\uc544 \uc788\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PostgreSQL -&gt; name = Kim\nRedis -&gt; name = Lee\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc0c1\ud669\uc744 Cache Invalidation \ubb38\uc81c\ub77c\uace0 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ubc29\ubc95\uc740 \ub370\uc774\ud130\ub97c \ubcc0\uacbd\ud560 \ub54c \uce90\uc2dc\ub97c \uc0ad\uc81c\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UPDATE Database -&gt; DELETE Redis Cache\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \uc694\uccad\uc774 \ub4e4\uc5b4\uc624\uba74 DB\uc5d0\uc11c \ucd5c\uc2e0 \ub370\uc774\ud130\ub97c \uc77d\uc5b4\uc11c \ub2e4\uc2dc Redis\uc5d0 \uc800\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request -&gt; Redis Cache Miss -&gt; Database -&gt; Redis -&gt; Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uce90\uc2dc\ub97c \uc0ac\uc6a9\ud558\ub294 \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 &#8220;\uc5b4\ub5bb\uac8c \uce90\uc2dc\ud560 \uac83\uc778\uac00&#8221;\ub9cc\ud07c &#8220;\uc5b8\uc81c \uce90\uc2dc\ub97c \uc9c0\uc6b8 \uac83\uc778\uac00&#8221;\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Session Store<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uc138\uc158 \uc800\uc7a5\uc18c\ub85c\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uac00 \uc5ec\ub7ec \ub300\ub77c\uba74 \uba54\ubaa8\ub9ac\uc5d0 \uc138\uc158\uc744 \uc800\uc7a5\ud558\ub294 \ubc29\uc2dd\uc5d0 \ubb38\uc81c\uac00 \uc0dd\uae38 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Load Balancer -&gt; Server A\nClient -&gt; Load Balancer -&gt; Server B\nClient -&gt; Load Balancer -&gt; Server C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\uac00 Server A\uc5d0\uc11c \ub85c\uadf8\uc778\ud588\ub294\ub370 \ub2e4\uc74c \uc694\uccad\uc774 Server B\ub85c \ub4e4\uc5b4\uac08 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \uac01\uac01\uc758 \uba54\ubaa8\ub9ac\uc5d0 \uc138\uc158\uc744 \uc800\uc7a5\ud588\ub2e4\uba74 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \uacf5\ud1b5 \uc138\uc158 \uc800\uc7a5\uc18c\ub85c \uc0ac\uc6a9\ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server A -&gt; Redis\nServer B -&gt; Redis\nServer C -&gt; Redis\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5b4\ub290 \uc11c\ubc84\uac00 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub354\ub77c\ub3c4 \uac19\uc740 \uc138\uc158 \ub370\uc774\ud130\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Pub\/Sub<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uba54\uc2dc\uc9c0\ub97c \uc5ec\ub7ec Subscriber\uc5d0\uac8c \uc804\ub2ec\ud558\ub294 Pub\/Sub \uae30\ub2a5\ub3c4 \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Publisher -&gt; Redis Channel -&gt; Subscriber A\nPublisher -&gt; Redis Channel -&gt; Subscriber B\nPublisher -&gt; Redis Channel -&gt; Subscriber C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 Node.js WebSocket \uc11c\ubc84\uac00 \uc5ec\ub7ec \ub300 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WebSocket Server A\nWebSocket Server B\nWebSocket Server C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud55c \uc11c\ubc84\uc5d0\uc11c \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \ub2e4\ub978 \uc11c\ubc84\uc5d0\ub3c4 \uc804\ub2ec\ud574\uc57c \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis Pub\/Sub\uc744 \uc774\uc6a9\ud558\uba74 \uc11c\ubc84 \uc0ac\uc774\uc5d0\uc11c \uc774\ubca4\ud2b8\ub97c \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server A -&gt; Redis Pub\/Sub -&gt; Server B\nServer A -&gt; Redis Pub\/Sub -&gt; Server C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Redis Pub\/Sub\uc740 \uba54\uc2dc\uc9c0\ub97c \uc601\uad6c\uc801\uc73c\ub85c \uc800\uc7a5\ud558\ub294 \uba54\uc2dc\uc9c0 \ud050\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Subscriber\uac00 \uc5f0\uacb0\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740 \ub3d9\uc548 \ubc1c\ud589\ub41c \uba54\uc2dc\uc9c0\ub97c \ub098\uc911\uc5d0 \ub2e4\uc2dc \uac00\uc838\uc624\ub294 \uc6a9\ub3c4\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uba54\uc2dc\uc9c0 \uc601\uc18d\uc131\uc774\ub098 \uc7ac\ucc98\ub9ac, \uc18c\ube44\uc790 \uadf8\ub8f9 \ub4f1\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 Redis Streams\ub098 Kafka \uac19\uc740 \ub2e4\ub978 \uad6c\uc870\ub97c \uace0\ub824\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis Streams<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis Streams\ub294 \uc774\ubca4\ud2b8 \ub370\uc774\ud130\ub97c \uc21c\uc11c\uac00 \uc788\ub294 \ub85c\uadf8 \ud615\ud0dc\ub85c \uc800\uc7a5\ud560 \uc218 \uc788\ub294 \uc790\ub8cc\uad6c\uc870\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Producer -&gt; Redis Stream -&gt; Event 1\nProducer -&gt; Redis Stream -&gt; Event 2\nProducer -&gt; Redis Stream -&gt; Event 3\nProducer -&gt; Redis Stream -&gt; Event 4\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pub\/Sub\uacfc \ub2ec\ub9ac \uba54\uc2dc\uc9c0\uac00 Redis\uc5d0 \uc800\uc7a5\ub418\uae30 \ub54c\ubb38\uc5d0 \uc18c\ube44\uc790\uac00 \ub098\uc911\uc5d0 \uc77d\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consumer Group\uc744 \uc774\uc6a9\ud558\uba74 \uc5ec\ub7ec Worker\uac00 \uc791\uc5c5\uc744 \ub098\ub220 \ucc98\ub9ac\ud558\ub294 \uad6c\uc870\ub3c4 \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Producer -&gt; Redis Stream -&gt; Consumer A\n                          -&gt; Consumer B\n                          -&gt; Consumer C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac04\ub2e8\ud55c \uc774\ubca4\ud2b8 \ucc98\ub9ac\ubd80\ud130 \uc791\uc5c5 \ud050 \ud615\ud0dc\uc758 \uc2dc\uc2a4\ud15c\uae4c\uc9c0 \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ubd84\uc0b0 \ub77d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \uc11c\ubc84\uac00 \ub3d9\uc2dc\uc5d0 \uac19\uc740 \uc791\uc5c5\uc744 \uc218\ud589\ud558\uba74 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud55c\uc815\ub41c \uc544\uc774\ud15c\uc744 \uad6c\ub9e4\ud558\ub294 \uc0c1\ud669\uc744 \uc0dd\uac01\ud574\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server A -&gt; \uc7ac\uace0 \ud655\uc778\nServer B -&gt; \uc7ac\uace0 \ud655\uc778\n\uc7ac\uace0 -&gt; 1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \uc11c\ubc84\uac00 \ub3d9\uc2dc\uc5d0 \uc7ac\uace0\ub97c \ud655\uc778\ud558\uace0 \uad6c\ub9e4\ub97c \ucc98\ub9ac\ud558\uba74 \uc7ac\uace0\uac00 \uc74c\uc218\uac00 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc0c1\ud669\uc5d0\uc11c \uc5ec\ub7ec \ud504\ub85c\uc138\uc2a4\uac00 \ub3d9\uc2dc\uc5d0 \ud2b9\uc815 \uc791\uc5c5\uc744 \uc218\ud589\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ubd84\uc0b0 \ub77d\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server A -&gt; Redis Lock -&gt; Critical Section -&gt; Lock Release\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uc6d0\uc790\uc801\uc778 \uba85\ub839\uacfc TTL \ub4f1\uc744 \uc774\uc6a9\ud574 \ubd84\uc0b0 \ub77d\uc744 \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \ubd84\uc0b0 \ub77d\uc740 \uad6c\ud604\uc774 \uc0dd\uac01\ubcf4\ub2e4 \uae4c\ub2e4\ub86d\ub2e4. \ub2e8\uc21c\ud788 <code>SET<\/code> \ud558\ub098 \uc0ac\uc6a9\ud558\ub294 \uc218\uc900\uc5d0\uc11c \ub05d\ub098\ub294 \ubb38\uc81c\uac00 \uc544\ub2c8\uace0, \ub77d \ub9cc\ub8cc, \uc18c\uc720\uad8c, \uc7a5\uc560, \uc7ac\uc2dc\ub3c4 \ub4f1\uc744 \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc6d0\uc790\uc801 \uc5f0\uc0b0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uc758 \uba85\ub839 \uc911\uc5d0\ub294 \uc6d0\uc790\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uac83\ub4e4\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uce74\uc6b4\ud130\ub97c \uc99d\uac00\uc2dc\ud0a4\ub294 <code>INCR<\/code>\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INCR counter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \ub4e4\uc5b4\uc640\ub3c4 \ub2e8\uc21c\ud55c <code>GET -&gt; \uacc4\uc0b0 -&gt; SET<\/code> \ubc29\uc2dd\ubcf4\ub2e4 \uc548\uc804\ud558\uac8c \uce74\uc6b4\ud130\ub97c \uc99d\uac00\uc2dc\ud0ac \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET counter -&gt; \uacc4\uc0b0 -&gt; SET counter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf4\ub2e4\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INCR counter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc Redis\uac00 \uc81c\uacf5\ud558\ub294 \uc6d0\uc790\uc801 \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc801\uc808\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ud2b9\uc131\uc740 \uc870\ud68c\uc218, \uc7ac\uace0, \uc694\uccad \ud69f\uc218 \uc81c\ud55c \ub4f1 \ub2e4\uc591\ud55c \uacf3\uc5d0\uc11c \ud65c\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Rate Limiting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 API \uc694\uccad \ud69f\uc218\ub97c \uc81c\ud55c\ud558\ub294 \ub370\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud2b9\uc815 \uc0ac\uc6a9\uc790\uac00 1\ubd84\uc5d0 100\ubc88\uae4c\uc9c0\ub9cc API\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user:1001:requests -&gt; 73\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc694\uccad\uc774 \ub4e4\uc5b4\uc62c \ub54c\ub9c8\ub2e4 \uce74\uc6b4\ud130\ub97c \uc99d\uac00\uc2dc\ud0a4\uace0 TTL\uc744 \uc124\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request -&gt; Redis INCR -&gt; 100 \uc774\ud558 -&gt; \ud5c8\uc6a9\nRequest -&gt; Redis INCR -&gt; 100 \ucd08\uacfc -&gt; \uac70\ubd80\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">API \uc11c\ubc84\ub97c \uc5ec\ub7ec \ub300 \uc6b4\uc601\ud558\ub354\ub77c\ub3c4 Redis\ub97c \uacf5\ud1b5 \uc800\uc7a5\uc18c\ub85c \uc0ac\uc6a9\ud558\uba74 \uc804\uccb4 \uc11c\ubc84 \uae30\uc900\uc73c\ub85c \uc694\uccad \ud69f\uc218\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Persistence<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \uba54\ubaa8\ub9ac \uae30\ubc18\uc774\uc9c0\ub9cc \ub370\uc774\ud130\ub97c \ub514\uc2a4\ud06c\uc5d0 \uc800\uc7a5\ud558\ub294 \uae30\ub2a5\ub3c4 \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ubc29\uc2dd\uc740 RDB\uc640 AOF\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RDB<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\uc815 \uc2dc\uc810\uc758 Redis \ub370\uc774\ud130\ub97c \uc2a4\ub0c5\uc0f7 \ud615\ud0dc\ub85c \uc800\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Memory -&gt; Snapshot -&gt; RDB File\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uae30\uc801\uc778 \ubc31\uc5c5\uc5d0 \uc801\ud569\ud558\uace0 \ud30c\uc77c \ud06c\uae30\uac00 \ube44\uad50\uc801 \uc791\ub2e4\ub294 \uc7a5\uc810\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">AOF<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uc4f0\uae30 \uba85\ub839\uc744 \ub85c\uadf8 \ud615\ud0dc\ub85c \uae30\ub85d\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET user:1 Kim\nSET user:2 Lee\nINCR counter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc791\uc5c5 \uae30\ub85d\uc744 \ud30c\uc77c\uc5d0 \uc800\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc73c\ub85c RDB\ubcf4\ub2e4 \ub370\uc774\ud130 \uc190\uc2e4\uc744 \uc904\uc774\ub294 \ubc29\ud5a5\uc73c\ub85c \uc124\uc815\ud560 \uc218 \uc788\uc9c0\ub9cc \uc800\uc7a5\ub418\ub294 \ub85c\uadf8\uac00 \ucee4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \ub2e8\uc21c \uce90\uc2dc\ub85c \uc0ac\uc6a9\ud55c\ub2e4\uba74 Persistence\uac00 \uc911\uc694\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c Redis \uc790\uccb4\ub97c \uc911\uc694\ud55c \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \uc2dc\uc2a4\ud15c\uc73c\ub85c \uc0ac\uc6a9\ud55c\ub2e4\uba74 Persistence\uc640 \uc7a5\uc560 \ubcf5\uad6c \uc815\ucc45\uc744 \ubc18\ub4dc\uc2dc \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis\uc640 Database\uc758 \uad00\uacc4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c MySQL\uc774\ub098 PostgreSQL\uc758 \ub300\uccb4\ud488\uc73c\ub85c \uc0dd\uac01\ud558\uba74 \uc124\uacc4\uac00 \uaf2c\uc774\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Node.js -&gt; Redis -&gt; Cache\nNode.js -&gt; Redis -&gt; Session\nNode.js -&gt; Redis -&gt; Counter\nNode.js -&gt; PostgreSQL -&gt; Persistent Data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL\uc774\ub098 MySQL\uc774 \uc6d0\ubcf8 \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud558\uace0 Redis\ub294 \ube60\ub974\uac8c \uc811\uadfc\ud574\uc57c \ud558\ub294 \ub370\uc774\ud130\ub97c \uc784\uc2dc \ub610\ub294 \ubcc4\ub3c4\uc758 \uc0c1\ud0dc \uc800\uc7a5\uc18c\ub85c \uc0ac\uc6a9\ud558\ub294 \uc2dd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb3c\ub860 Redis \uc790\uccb4\ub97c Primary Data Store\ub85c \uc0ac\uc6a9\ud558\ub294 \uc2dc\uc2a4\ud15c\ub3c4 \uc874\uc7ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc911\uc694\ud55c \uac83\uc740 Redis\uac00 \uba54\ubaa8\ub9ac \uae30\ubc18\uc774\ub77c\ub294 \uc0ac\uc2e4\ub9cc \ubcf4\uace0 \ubb34\uc870\uac74 \uce90\uc2dc\ub85c\ub9cc \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, <strong>\ub370\uc774\ud130\uc758 \uc601\uc18d\uc131\uacfc \uc77c\uad00\uc131 \uc694\uad6c\uc0ac\ud56d\uc744 \uae30\uc900\uc73c\ub85c \uc5ed\ud560\uc744 \uc815\ud558\ub294 \uac83<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis\uc640 WebSocket<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc55e\uc5d0\uc11c WebSocket \uc11c\ubc84\ub97c \uc0b4\ud3b4\ubd24\ub2e4\uba74 Redis\uac00 \uc65c \uac19\uc774 \ub4f1\uc7a5\ud558\ub294\uc9c0\ub3c4 \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WebSocket \uc11c\ubc84\uac00 \ud558\ub098\ub77c\uba74 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc5f0\uacb0\ub41c \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WebSocket Server -&gt; Client A\nWebSocket Server -&gt; Client B\nWebSocket Server -&gt; Client C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc \uc11c\ubc84\uac00 \uc5ec\ub7ec \ub300\uac00 \ub418\uba74 \ubb38\uc81c\uac00 \uc0dd\uae34\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server A -&gt; Client A\nServer B -&gt; Client B\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A\uac00 \ubcf4\ub0b8 \uc774\ubca4\ud2b8\ub97c B\uc5d0\uac8c \uc804\ub2ec\ud558\ub824\uba74 \uc11c\ubc84 \uac04 \ud1b5\uc2e0\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis Pub\/Sub\uc744 \uc0ac\uc6a9\ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server A -&gt; Redis -&gt; Server B -&gt; Client B\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c Redis\ub294 WebSocket \uc790\uccb4\ub97c \ub300\uccb4\ud558\ub294 \uae30\uc220\uc774 \uc544\ub2c8\ub77c <strong>\uc5ec\ub7ec \uc11c\ubc84 \uc0ac\uc774\uc5d0\uc11c \uc0c1\ud0dc\ub098 \uc774\ubca4\ud2b8\ub97c \uacf5\uc720\ud558\uae30 \uc704\ud55c \ubcf4\uc870 \uc2dc\uc2a4\ud15c<\/strong>\uc73c\ub85c \uc0ac\uc6a9\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Node.js \uc11c\ubc84\uc5d0\uc11c Redis\uc758 \uc704\uce58<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js API \uc11c\ubc84\ub97c \uae30\uc900\uc73c\ub85c \ubcf4\uba74 Redis\ub294 \uc5ec\ub7ec \uc704\uce58\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Node.js -&gt; Redis -&gt; Cache\nNode.js -&gt; Redis -&gt; Session\nNode.js -&gt; Redis -&gt; Rate Limit\nNode.js -&gt; Redis -&gt; Pub\/Sub\nNode.js -&gt; Redis -&gt; Lock\nNode.js -&gt; Redis -&gt; Queue\nNode.js -&gt; PostgreSQL -&gt; Persistent Data\nNode.js -&gt; External API -&gt; External Service\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 Redis\ub77c\ub3c4 \ubaa9\uc801\uc5d0 \ub530\ub77c \uc0ac\uc6a9\ud558\ub294 \uc790\ub8cc\uad6c\uc870\uc640 \uc811\uadfc \ubc29\uc2dd\uc774 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String -&gt; Cache \/ Counter\nHash -&gt; Object-like Data\nList -&gt; Queue\nSet -&gt; Unique Collection\nSorted Set -&gt; Ranking\nPub\/Sub -&gt; Real-time Event\nStream -&gt; Event Processing\nTTL -&gt; Expiration\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc2dd\uc73c\ub85c \ubcf4\uba74 Redis\uc758 \uae30\ub2a5\ub4e4\uc774 \ub2e8\uc21c\ud788 \ub9ce\uae30\ub9cc \ud55c \uac83\uc774 \uc544\ub2c8\ub77c \uac01\uac01 \ud2b9\uc815 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc874\uc7ac\ud55c\ub2e4\ub294 \uac83\uc744 \uc54c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis\ub97c \uc0ac\uc6a9\ud560 \ub54c \uc8fc\uc758\ud560 \uc810<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \ube60\ub974\ub2e4\ub294 \uc774\uc720\ub9cc\uc73c\ub85c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c \ub123\ub294 \uc2dc\uc2a4\ud15c\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\uc7a5 \uba3c\uc800 \uc0dd\uac01\ud574\uc57c \ud560 \uac83\uc740 \uba54\ubaa8\ub9ac\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RAM -&gt; Redis Data\nRAM -&gt; Redis Overhead\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\uac00 \uacc4\uc18d \uc99d\uac00\ud558\uba74 \uacb0\uad6d \uba54\ubaa8\ub9ac \ud55c\uacc4\uc5d0 \ub3c4\ub2ec\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \uce90\uc2dc\ub97c \uc0ac\uc6a9\ud560 \ub54c\ub294 TTL\uacfc \ub9cc\ub8cc \uc815\ucc45\uc744 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Cache -&gt; \uc800\uc7a5 \uc2dc\uc810\nCache -&gt; \uc0ad\uc81c \uc2dc\uc810\nCache -&gt; \uc720\uc9c0 \uc2dc\uac04\nCache -&gt; \uc6d0\ubcf8 DB\uc640\uc758 \uc77c\uad00\uc131\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uac00 \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \uc11c\ube44\uc2a4\uac00 \uc5bc\ub9c8\ub098 \uc601\ud5a5\uc744 \ubc1b\ub294\uc9c0\ub3c4 \ubd10\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uce90\uc2dc\ub77c\uba74 Redis\uac00 \uc7a0\uc2dc \uc8fd\uc5b4\ub3c4 DB\uc5d0\uc11c \ub2e4\uc2dc \uc77d\uc73c\uba74 \ub420 \uc218 \uc788\uc9c0\ub9cc, \uc138\uc158\uc774\ub098 \uc911\uc694\ud55c \uc0c1\ud0dc \ub370\uc774\ud130\ub97c Redis\uc5d0 \uc758\uc874\ud558\uace0 \uc788\ub2e4\uba74 \uc774\uc57c\uae30\uac00 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub97c \ub3c4\uc785\ud558\ub294 \uac83\ubcf4\ub2e4 <strong>Redis\uac00 \uc5c6\uc5b4\uc84c\uc744 \ub54c \uc11c\ube44\uc2a4\uac00 \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud574\uc57c \ud558\ub294\uc9c0<\/strong>\ub97c \uba3c\uc800 \uc0dd\uac01\ud558\ub294 \ud3b8\uc774 \ub0ab\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Redis \uc804\uccb4 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c0\uae08\uae4c\uc9c0\uc758 \ub0b4\uc6a9\uc744 \ud558\ub098\ub85c \ubb36\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; Redis -&gt; String -&gt; Cache \/ Counter\nApplication -&gt; Redis -&gt; Hash -&gt; Object-like Data\nApplication -&gt; Redis -&gt; List -&gt; Queue\nApplication -&gt; Redis -&gt; Set -&gt; Unique Collection\nApplication -&gt; Redis -&gt; Sorted Set -&gt; Ranking\nApplication -&gt; Redis -&gt; Stream -&gt; Event Processing\nApplication -&gt; Redis -&gt; Pub\/Sub -&gt; Real-time Event\nApplication -&gt; Redis -&gt; TTL -&gt; Expiration\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 PostgreSQL\uc774\ub098 MySQL\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Node.js -&gt; Redis -&gt; Cache\nClient -&gt; Node.js -&gt; Redis -&gt; Session\nClient -&gt; Node.js -&gt; Redis -&gt; Counter\nClient -&gt; Node.js -&gt; Redis -&gt; Pub\/Sub\nClient -&gt; Node.js -&gt; PostgreSQL -&gt; Source of Truth\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uc758 \ubcf8\uc9c8\uc740 <strong>\ube60\ub978 \uba54\ubaa8\ub9ac \uae30\ubc18 \ub370\uc774\ud130 \uc800\uc7a5\uc18c\uc640 \ub2e4\uc591\ud55c \uc790\ub8cc\uad6c\uc870\ub97c \uc774\uc6a9\ud574 \uc790\uc8fc \ubc1c\uc0dd\ud558\ub294 \uc11c\ubc84 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 \uac83<\/strong>\uc5d0 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \uc6a9\ub3c4\ub97c \uc815\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Cache\nSession\nCounter\nRate Limiting\nPub\/Sub\nDistributed Lock\nQueue\nRanking\nReal-time State\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc790\ub8cc\uad6c\uc870\ub294 \uc6a9\ub3c4\uc5d0 \ub9de\ucdb0 \uc120\ud0dd\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String\nHash\nList\nSet\nSorted Set\nStream\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL\uc774\ub098 MySQL\uc774 \uc11c\ube44\uc2a4\uc758 \uc601\uc18d\uc801\uc778 \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud55c\ub2e4\uba74 Redis\ub294 \uadf8 \uc606\uc5d0\uc11c \ube60\ub978 \uc811\uadfc\uc774 \ud544\uc694\ud55c \ub370\uc774\ud130\ub098 \uc11c\ubc84 \uac04 \uacf5\uc720 \uc0c1\ud0dc\ub97c \ub2f4\ub2f9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Node.js -&gt; Redis -&gt; Cache\nNode.js -&gt; Redis -&gt; Session\nNode.js -&gt; Redis -&gt; Real-time State\nNode.js -&gt; Redis -&gt; Pub\/Sub\nNode.js -&gt; PostgreSQL -&gt; Persistent Data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d Redis\ub97c \uacf5\ubd80\ud560 \ub54c \uba85\ub839\uc5b4\ub97c \ud558\ub098\uc529 \uc678\uc6b0\ub294 \uac83\ubcf4\ub2e4 <strong>&#8220;\uc774 \ubb38\uc81c\ub97c DB\ub85c \ucc98\ub9ac\ud560 \uac83\uc778\uac00, Redis\ub85c \ucc98\ub9ac\ud560 \uac83\uc778\uac00, \ub458\uc744 \uc5b4\ub5bb\uac8c \uc870\ud569\ud560 \uac83\uc778\uac00&#8221;<\/strong>\ub97c \ud310\ub2e8\ud558\ub294 \uac83\uc774 \ub354 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub300\uccb4\ud558\ub294 \uae30\uc220\uc774\ub77c\uae30\ubcf4\ub2e4, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc0ac\uc774\uc5d0\uc11c <strong>\uc18d\ub3c4, \uc0c1\ud0dc \uacf5\uc720, \uc784\uc2dc \ub370\uc774\ud130, \uc774\ubca4\ud2b8 \ucc98\ub9ac \uac19\uc740 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud55c \ubcc4\ub3c4\uc758 \ub370\uc774\ud130 \uacc4\uce35<\/strong>\uc73c\ub85c \ubcf4\ub294 \ud3b8\uc774 \uc774\ud574\ud558\uae30 \uc88b\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redis\ub294 \uba54\ubaa8\ub9ac \uae30\ubc18\uc758 Key-Value \ub370\uc774\ud130 \uc800\uc7a5\uc18c\ub2e4. \ub370\uc774\ud130\ub97c \uc8fc\ub85c RAM\uc5d0 \uc800\uc7a5\ud558\uae30 \ub54c\ubb38\uc5d0 \uc77c\ubc18\uc801\uc778 \ub514\uc2a4\ud06c \uae30\ubc18 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ubcf4\ub2e4 \ub9e4\uc6b0 \ube60\ub974\uac8c \ub370\uc774\ud130\ub97c \uc77d\uace0 \uc4f8 \uc218 \uc788\ub2e4. \ucc98\uc74c\uc5d0\ub294 \ub2e8\uc21c\ud55c \uce90\uc2dc\ucc98\ub7fc \ub9ce\uc774 \uc0ac\uc6a9\ub410\uc9c0\ub9cc, \uc9c0\uae08\uc740 \uce90\uc2dc\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc138\uc158 \uc800\uc7a5, \uc778\uc99d \uc815\ubcf4, \uc2e4\uc2dc\uac04 \uc0c1\ud0dc \uad00\ub9ac, Pub\/Sub, \ubd84\uc0b0 \ub77d, \uc791\uc5c5 \ud050 \ub4f1 \uc5ec\ub7ec \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub41c\ub2e4. \uae30\ubcf8\uc801\uc778 \uad6c\uc870\ub294 \ub2e8\uc21c\ud558\ub2e4. \uc608\ub97c \ub4e4\uc5b4: PostgreSQL\uc774\ub098 MySQL\ucc98\ub7fc \ud14c\uc774\ube14\uc744 \uc911\uc2ec\uc73c\ub85c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"class_list":["post-1689","post","type-post","status-publish","format-standard","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1689"}],"version-history":[{"count":3,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1689\/revisions"}],"predecessor-version":[{"id":1973,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1689\/revisions\/1973"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}