{"id":4558,"date":"2026-07-15T07:00:00","date_gmt":"2026-07-14T22:00:00","guid":{"rendered":"https:\/\/litcoder.com\/?p=4558"},"modified":"2026-06-27T16:56:16","modified_gmt":"2026-06-27T07:56:16","slug":"redis-stream%ec%9d%84-%ec%9d%b4%ec%9a%a9%ed%95%9c-task-queue-%ea%b5%ac%ec%84%b1","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=4558","title":{"rendered":"Redis Stream\uc744 \uc774\uc6a9\ud55c task queue \uad6c\uc131"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Redis stream\uc740 \ub370\uc774\ud130\uac00 \uacc4\uc18d \ucd94\uac00\ub418\ub294 logging\uac19\uc740 \uc0ac\uc6a9 \ucf00\uc774\uc2a4\ub97c \uc5fc\ub450\ud574 \ub450\uace0 \ub3c4\uc785\uc5c8\ub2e4\uace0 \ud55c\ub2e4. \ud558\uc9c0\ub9cc stream \ub0b4\uc5d0 \uc313\uc5ec \uc788\ub294 \uc544\uc774\ud15c \ub4e4 \uc911 ACK\ub97c \ubc1b\uc9c0 \ubabb\ud55c \uc544\uc774\ud15c\ub4e4\uc744 PEL(Pending Entries List)\ub85c \uad00\ub9ac \ud560 \uc218 \uc788\ub2e4 \ubcf4\ub2c8 \ucc98\ub9ac \ub0b4\uc5ed\uc744 \ud30c\uc545\ud558\uac70\ub098 \uc911\ubcf5\ub41c \ucc98\ub9ac\ub97c \ub9c9\ub294\ub370\uc5d0\ub3c4 \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\ub294 \ub2e4\uc591\ud55c \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4 API\ub97c \uc9c0\uc6d0\ud558\uc9c0\ub9cc \uc774 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uac01 \uba85\ub839\uc5b4\ub4e4\uc758 \ud65c\uc6a9\uc5d0 \uc911\uc810\uc744 \ub450\uc5b4 \uba85\ub839\uc5b4 \uc778\ud130\ud398\uc774\uc2a4(CLI)\ub97c \uc54c\uc544\ubcf4\uace0 task queue\ub97c \uc0dd\uc131\ud558\uace0 \ucc98\ub9ac\ud558\ub294 \uacfc\uc815\uc744 bash script\ub85c \uad6c\uc131\ud574 \ubcf8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Task Queue<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Task \uc2e4\ud589\uc694\uccad\uc774 queue\ub97c \ud1b5\ud574 \ub4e4\uc5b4\uc640\uc11c \uc5ec\ub7ec\uac1c\uc758 consumer\ub4e4\uc774 \uc774 \ub0b4\uc6a9\uc744 \uc77d\uc5b4\uc11c \ucc98\ub9ac\ud558\ub294 \uc0c1\ud669\uc744 \uac00\uc815\ud574 \ubcf4\uc790. \ub2e4\uc74c\uc758 \uadf8\ub9bc\uc5d0\uc11c &#8216;P&#8217;\ub294 \uc0dd\uc0b0\uc790(Producer)\ub85c task\ub97c queue\uc5d0 \ub123\uc5b4\uc8fc\uace0, &#8216;C1&#8217;, &#8216;C2&#8217;, &#8216;C3&#8217;\ub294 \uc18c\ube44\uc790\ub4e4(Customers)\ub85c task queue\uc5d0\uc11c item(task)\ub97c \uaebc\ub0b4\uc11c \ucc98\ub9ac\ud55c\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"711\" height=\"287\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue.png\" alt=\"\" class=\"wp-image-4561\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue.png 711w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue-300x121.png 300w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue-624x252.png 624w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Redis\ub85c \uc774\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574\uc11c\ub294 \ud06c\uac8c \ub450\uac1c\uc758 \ub3d9\uc791\uc774 \ud544\uc694 \ud55c\ub370, \ud558\ub098\ub294 <code>READGROUP<\/code>\uc73c\ub85c task\ub97c \uc77d\uc5b4 \ub4e4\uc774\ub294 \uac83\uc774\uace0, \ub2e4\ub978 \ud558\ub098\ub294 \ucc98\ub9ac\uac00 \uc644\ub8cc \ub418\uc5c8\ub2e4\ub294 \uac83\uc744 <code>ACK<\/code>\ub85c Redis\uc5d0 \uc54c\ub824 \uc8fc\ub294 \uac83\uc774\ub2e4. \uc774 \uc751\ub2f5\uc744 \ubc1b\uc73c\uba74 \ud574\ub2f9 task\ub294 queue\uc5d0\uc11c \uc81c\uac70\ub41c\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"711\" height=\"424\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue_act.png\" alt=\"\" class=\"wp-image-4562\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue_act.png 711w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue_act-300x179.png 300w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/redis_task_queue_act-624x372.png 624w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\uc21c\uc11c\ub300\ub85c \uc0b4\ud3b4\ubcf4\uba74, \uba3c\uc800 \u2460 Producer\uac00 task\ub97c queue\uc5d0 \ucd94\uac00\ud55c\ub2e4. \u2461 Consumer\ub4e4\uc774 READGROUP\uba85\ub839\uc73c\ub85c task\ub97c \uac00\uc838 \uac00\uc11c \ucc98\ub9ac\ud55c\ub2e4. \u2462 \ucc98\ub9ac\uac00 \uc644\ub8cc\ub418\uba74 \ud574\ub2f9 consumer\ub294 ACK\ub97c \ubcf4\ub0b8\ub2e4. \u2463 ACK \uc804\uc1a1\uc744 \ubc1b\uc740 task\ub294 queue\uc5d0\uc11c \uc81c\uac70\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0\ub85c \uc2e4\uc81c Redis\uc758 stream\uad00\ub828\uba85\ub839\uc5b4 \uc55e\uc5d0\ub294 &#8216;X&#8217; prefix\uac00 \ubd99\ub294\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">redis-cli\ub97c \uc774\uc6a9\ud55c \uc2e4\uc2b5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/redis.io\/docs\/latest\/develop\/tools\/cli\/\" data-type=\"link\" data-id=\"https:\/\/redis.io\/docs\/latest\/develop\/tools\/cli\/\">redis-cli<\/a>\ub294 \ub2e4\uc591\ud55c \uc6b4\uc601\uccb4\uc81c\uc5d0\uc11c \uc0ac\uc6a9\ud560\uc218 \uc788\ub294 \uba85\ub839\uc5b4 \uc778\ud130\ud398\uc774\uc2a4\ub85c \ud504\ub85c\uadf8\ub798\ubc0d API\uc5c6\uc774\ub3c4 Redis\uba85\ub839\uc5b4\ub97c \uc218\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc900\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\uadf8\ub8f9\ub9cc\ub4e4\uae30<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\uc55e\uc73c\ub85c \uc0ac\uc6a9\ud560 Redis stream\uc744 <code>taskq<\/code> \ub77c\uace0 \uc774\ub984 \uc9d3\uace0 \uc774\uac83\uc5d0 \uc811\uadfc\ud558\ub294 \uadf8\ub8f9\uba85\uc744 <code>consumers<\/code> \ub77c\uace0 \ubd80\ub974\ub3c4\ub85d \ud558\uc790. \ub2e4\uc74c\uc758 \uba85\ub839\uc5b4\ub294 Redis stream\uacfc \uc5ec\uae30\uc5d0 \uc811\uadfc\ud560 \uadf8\ub8f9\uc744 \uc0dd\uc131\ud574\uc900\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">redis-cli XGROUP CREATE taskq consumers 0 MKSTREAM<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u2460 Queue\uc5d0 \ucd94\uac00\ud558\uae30<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>XADD<\/code> \uba85\ub839\uc5b4\ub97c \uc774\uc6a9\ud574\uc11c <code>taskq<\/code> stream\uc5d0 <code>task_id<\/code>\ub85c \uc2dc\uc791\ud558\ub294 \uba54\uc138\uc9c0\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ucd94\uac00\ud55c\ub2e4. <code>\"*\"<\/code> \ud45c\uc2dc\ub294 item\uc758 identifier\ub97c \ub530\ub85c \uc9c0\uc815\ud558\uc9c0 \uc54a\uace0 \uc790\ub3d9\ud560\ub2f9 \ud558\ub3c4\ub85d \ud558\uaca0\ub2e4\ub294 \uc758\ubbf8\uc774\ub2e4. Identifier\ub294 \uc22b\uc790\ub85c\ub41c timestamp \ud615\uc2dd\uc774 \uc544\ub2c8\uba74 \ubc1b\uc544\ub4e4\uc5ec\uc9c0\uc9c0 \uc54a\uc73c\ub2c8 \uc218\ub3d9\uc73c\ub85c \uc9c0\uc815\ud574 \uc904 \uac83\uc774\ub77c\uba74 \ud615\uc2dd\uc5d0 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">XADD taskq \"*\" task_id task_1 data \"1\ubc88\uc9f8\ub85c \ub123\uc740 \ud0dc\uc2a4\ud06c\"\nXADD taskq \"*\" task_id task_2 data \"2\ubc88\uc9f8\ub85c \ub123\uc740 \ud0dc\uc2a4\ud06c\"\nXADD taskq \"*\" task_id task_3 data \"3\ubc88\uc9f8\ub85c \ub123\uc740 \ud0dc\uc2a4\ud06c\"\n...<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u2461 Task \ucc98\ub9ac(consume)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>XREADGROUP<\/code> \uba85\ub839\uc5b4\ub85c <code>taskq<\/code>\ub85c \ubd80\ud130 \uc544\uc774\ud15c\uc744 \ud558\ub098 \uc77d\ub294\ub2e4. <code>BLOCK<\/code> \uad6c\ubb38 \ub4a4\uc758 \uc22b\uc790\ub294 \uc544\uc774\ud15c\uc774 \uc5c6\uc744 \ub54c \uc5bc\ub9c8\ub098 \uae30\ub2e4\ub9b4 \uac83\uc778\uac00\ub97c \ubc00\ub9ac\ucd08 \ub2e8\uc704\ub85c \ub098\ud0c0\ub0b4\ub294 \uac83\uc774\ub2e4. \uadf8\ub9ac\uace0 \uba85\ub839\uc5b4 \ub9c8\uc9c0\ub9c9\uc5d0 \ubd99\ub294 <code><strong>\">\"<\/strong><\/code>\uac00 \uc774 \uba85\ub839\uc5b4\uc5d0\uc11c \uc911\uc694\ud55c \uc5ed\ud560\uc744 \ud558\ub294\ub370, \uc774\uac83 \ub54c\ubb38\uc5d0 \ub2e4\ub978 consumers \uba64\ubc84\uac00 \uac00\uc838\uac00\uc9c0 \uc54a\uc740 task\uac00 \ubc18\ud658\ub41c\ub2e4. \ub9cc\uc57d \ubaa8\ub450 \uac00\uc838\uac00\uc11c queue\uac00 \ube44\uc5b4 \uc788\ub2e4\uba74 BLOCK\uc5d0 \uc124\uc815\ub41c 10\ucd08(10000ms)\ub97c \uae30\ub2e4\ub838\ub2e4\uac00 \uc885\ub8cc\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">XREADGROUP GROUP consumers c1 COUNT 1 BLOCK 10000 STREAMS taskq \">\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u2462 ACK \uc804\uc1a1<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub9ac\uac00 \uc644\ub8cc\ub41c \uc544\uc774\ud15c\uc744 \ud45c\uc2dc\ud558\uae30 \uc704\ud574 <code>XACK<\/code> \uba85\ub839\uc5b4\ub85c \ud574\ub2f9 message id\ub97c \uc804\uc1a1\ud558\uba74 \ud574\ub2f9 task\ub294 queue\uc5d0\uc11c \uc0ad\uc81c\ub41c\ub2e4. \uc704\uc758 \uba85\ub839\uc5b4\uc5d0\uc11c message id\ub97c \uc790\ub3d9 \uc0dd\uc131\ud558\ub3c4\ub85d \uc124\uc815\ud574 \ub450\uc5c8\uae30 \ub54c\ubb38\uc5d0 \uc774 \ub584 \ubc18\ud658\ub418\ub294 id\uac12\uc744 \uae30\uc5b5\ud574 \ub450\uc5c8\ub2e4\uac00 \ud30c\ub77c\ubbf8\ud130\ub85c \ub118\uaca8\uc8fc\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">XACK taskq consumers &lt;message_id><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Bash script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc758 \uacfc\uc815\ub4e4\uc744 bash script\ub85c \uc791\uc131\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><script src=\"https:\/\/gist.github.com\/8160fd7ce25549f89bdfd39069a37e9a.js\"><\/script><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud604\uc7ac \ucc98\ub9ac \uc0c1\ud0dc \ud45c\uc2dc<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">PEL(Pending Entries List) &#8211; XPENDING<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\uc9c1 <code>XACK<\/code>\ub97c \ubc1b\uc9c0 \uc54a\ub294 \uc544\uc774\ud15c\ub3c4 \uc77c\ub2e8 \uc5b4\ub290 \ud55c consumer\uac00 \ucc98\ub9ac\ud558\ub824\uace0 queue\uc5d0\uc11c \uac00\uc838\uac00\uba74 \ub2e4\ub978 consumer\ub4e4\uc758 \uc694\uccad\uc5d0 \uc758\ud574 \uc911\ubcf5 \ubc18\ud658\ub418\uc9c0 \uc54a\ub294 \uac83\uc774 \ubcf4\uc7a5\ub418\ub294\ub370, \uc774 \ub355\ubd84\uc5d0 \ub3d9\uc77c\ud55c \uc544\uc774\ud15c\uc774 \uc911\ubcf5\ud574\uc11c \ucc98\ub9ac\ub418\ub294 \uac83\uc744 \ub9c9\uc744 \uc218 \uc788\ub2e4. \uc544\uc9c1 \ucc98\ub9ac\uac00 \uc644\ub8cc\ub418\uc9c0 \uc54a\ub294 \ubaa9\ub85d\ub4e4\uc740 Redis\uac00 PEL(Pending Entreis List)\ub85c \ub530\ub85c \uad00\ub9ac\ud558\uba70 <code>XPENDING<\/code> \uba85\ub839\uc5b4\ub85c \uadf8 \uc0c1\ud0dc\ub97c \ud655\uc778\ud574 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">redis-cli XPENDING taskq consumers - + 10\n1) 1) \"1782541916776-0\"\n   2) \"c1\"\n   3) (integer) 3541627\n   4) (integer) 1<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">XINFO<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>XINFO<\/code>\ub97c \uc774\uc6a9\ud558\uba74 \ud2b9\uc815 stream\uc758 \ud604\uc7ac\uc0c1\ud0dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4. \uc608\ub97c \ub4e4\uc5b4 10\uac1c\uc758 task\ub97c \uc0dd\uc131\ud574\uc11c 3\uac1c\ub9cc \ucc98\ub9ac\ud55c \ud6c4 <code>XINFO<\/code> \uba85\ub839\uc5b4\ub85c <code>taskq<\/code>\uc758 \uc0c1\ud0dc\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcf4\uc5ec\uc900\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">redis-cli XINFO GROUPS taskq\n1)  1) \"name\"\n    2) \"consumers\"\n    3) \"consumers\"\n    4) (integer) 3\n    5) \"pending\"\n    6) (integer) 0\n    7) \"last-delivered-id\"\n    8) \"1782439931183-0\"\n    9) \"entries-read\"\n   10) (integer) 3\n   11) \"lag\"\n   12) (integer) 7<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucd9c\ub825\uc774 \uc880 \ubcf4\uae30\uc5d0 \ubd88\ud3b8\ud55c\ub370, \uc815\ub9ac\ud574 \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Group\uc758 \uc774\ub984\uc740 'consumers'\uc784\nname                consumers\n\n# 3\uac1c\uc758 'customers'\uac00 \uc9c0\uae08\uae4c\uc9c0 \uba54\uc138\uc9c0\ub97c \uc77d\uc5b4 \uac14\uc74c.\nconsumers           3\n\n# ACK\ub97c \ubabb\ubc1b\uace0 pending \uc911\uc778 \uc544\uc774\ud15c\uc740 \uc5c6\uc74c.\npending             0\n\n# \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc77d\ud600\uc9c4 \uba54\uc138\uc9c0\uc758 \uc544\uc774\ub514\ub2941782439931183-0.\nlast-delivered-id   1782439931183-0\n\n# 3\uac1c\uc758 \uba54\uc138\uc9c0\uac00 \uc77d\ud600\uc84c\uc74c. \nentries-read        3\n\n# Stream\uc548\uc5d0\ub294 \uc544\uc9c1 7\uac1c\uc758 \uba54\uc138\uc9c0\uac00 \ub0a8\uc544 \uc788\uc74c.\nlag.                7<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Redis stream\uc740 \ub370\uc774\ud130\uac00 \uacc4\uc18d \ucd94\uac00\ub418\ub294 logging\uac19\uc740 \uc0ac\uc6a9 \ucf00\uc774\uc2a4\ub97c \uc5fc\ub450\ud574 \ub450\uace0 \ub3c4\uc785\uc5c8\ub2e4\uace0 \ud55c\ub2e4. \ud558\uc9c0\ub9cc stream \ub0b4\uc5d0 \uc313\uc5ec \uc788\ub294 \uc544\uc774\ud15c \ub4e4 \uc911 ACK\ub97c \ubc1b\uc9c0 \ubabb\ud55c \uc544\uc774\ud15c\ub4e4\uc744 PEL(Pending Entries List)\ub85c \uad00\ub9ac \ud560 \uc218 \uc788\ub2e4 \ubcf4\ub2c8 \ucc98\ub9ac \ub0b4\uc5ed\uc744 \ud30c\uc545\ud558\uac70\ub098 \uc911\ubcf5\ub41c \ucc98\ub9ac\ub97c \ub9c9\ub294\ub370\uc5d0\ub3c4 \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ub420 \uc218 \uc788\ub2e4. Redis\ub294 \ub2e4\uc591\ud55c \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4 API\ub97c \uc9c0\uc6d0\ud558\uc9c0\ub9cc \uc774 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uac01 \uba85\ub839\uc5b4\ub4e4\uc758 \ud65c\uc6a9\uc5d0 \uc911\uc810\uc744 \ub450\uc5b4 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[5],"tags":[20,416,456,455],"class_list":["post-4558","post","type-post","status-publish","format-standard","hentry","category-programming","tag-bash","tag-redis","tag-stream","tag-task"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4558"}],"version-history":[{"count":24,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4558\/revisions"}],"predecessor-version":[{"id":4588,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4558\/revisions\/4588"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}