{"id":88535,"date":"2025-07-05T22:59:45","date_gmt":"2025-07-05T15:59:45","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=88535"},"modified":"2025-07-05T22:59:48","modified_gmt":"2025-07-05T15:59:48","slug":"redis-cluster-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/","title":{"rendered":"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><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><\/span><\/a><\/span><\/div>\n<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:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Redis_va_Redis_Cluster_la_gi\" >Redis v\u00e0 Redis Cluster l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Cau_truc_cua_Redis_Cluster\" >C\u1ea5u tr\u00fac c\u1ee7a Redis Cluster<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Redis_Cluster_hoat_dong_nhu_the_nao\" >Redis Cluster ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Cac_tinh_nang_chinh_cua_Redis_Cluster\" >C\u00e1c t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Redis Cluster<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Huong_dan_su_dung_Redis_Cluster_co_ban\" >H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng Redis Cluster c\u01a1 b\u1ea3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Cau_hoi_thuong_gap_ve_Redis_Cluster\" >C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Redis Cluster<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#Tong_ket\" >T\u1ed5ng k\u1ebft<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong><em>Redis l\u00e0 m\u1ed9t trong nh\u1eefng h\u1ec7 th\u1ed1ng l\u01b0u tr\u1eef in-memory ph\u1ed5 bi\u1ebfn nh\u1ea5t hi\u1ec7n nay. Tuy nhi\u00ean, khi h\u1ec7 th\u1ed1ng ph\u00e1t tri\u1ec3n l\u1edbn, b\u1ea1n c\u1ea7n m\u1ed9t gi\u1ea3i ph\u00e1p c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng, ph\u00e2n ph\u1ed1i d\u1eef li\u1ec7u, v\u00e0 \u0111\u1ea3m b\u1ea3o lu\u00f4n s\u1eb5n s\u00e0ng khi c\u00f3 s\u1ef1 c\u1ed1 \u2013 \u0111\u00f3 ch\u00ednh l\u00e0 l\u00fac Redis cluster ph\u00e1t huy s\u1ee9c m\u1ea1nh.\u00a0<\/em><\/strong><\/p>\n\n\n\n<p>\u0110\u1ecdc b\u00e0i vi\u1ebft n\u00e0y \u0111\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Redis cluster l\u00e0 g\u00ec?<\/li>\n\n\n\n<li>C\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a Redis cluster<\/li>\n\n\n\n<li>C\u00e1ch Redis cluster ho\u1ea1t \u0111\u1ed9ng<\/li>\n\n\n\n<li>C\u00e1ch s\u1eed d\u1ee5ng k\u00e8m v\u00ed d\u1ee5 c\u1ee5 th\u1ec3<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-redis-va-redis-cluster-la-gi\"><span class=\"ez-toc-section\" id=\"Redis_va_Redis_Cluster_la_gi\"><\/span><strong>Redis v\u00e0 Redis Cluster l\u00e0 g\u00ec?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-redis-la-gi\"><strong>Redis l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>Redis (vi\u1ebft t\u1eaft c\u1ee7a Remote Dictionary Server) l\u00e0 m\u1ed9t c\u01a1 s\u1edf d\u1eef li\u1ec7u NoSQL m\u00e3 ngu\u1ed3n m\u1edf, \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong b\u1ed9 nh\u1edb (in-memory), v\u1edbi kh\u1ea3 n\u0103ng truy xu\u1ea5t d\u1eef li\u1ec7u c\u1ef1c k\u1ef3 nhanh ch\u00f3ng. Redis ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t kho l\u01b0u tr\u1eef d\u1eef li\u1ec7u d\u1ea1ng key-value, h\u1ed7 tr\u1ee3 nhi\u1ec1u ki\u1ec3u d\u1eef li\u1ec7u ph\u1ee9c t\u1ea1p nh\u01b0 chu\u1ed7i (strings), danh s\u00e1ch (lists), b\u1ed9 (sets), sorted sets, hash, bitmaps, HyperLogLogs, streams v\u00e0 c\u00e1c ch\u1ec9 m\u1ee5c \u0111\u1ecba l\u00fd (geospatial indexes).<\/p>\n\n\n\n<p>Redis th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho c\u00e1c t\u00e1c v\u1ee5 nh\u01b0 caching, qu\u1ea3n l\u00fd session ng\u01b0\u1eddi d\u00f9ng, ho\u1eb7c ph\u00e2n t\u00edch d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c nh\u1edd v\u00e0o t\u1ed1c \u0111\u1ed9 v\u00e0 t\u00ednh hi\u1ec7u qu\u1ea3 c\u1ee7a n\u00f3.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm hi\u1ec3u \u0111\u1ea7y \u0111\u1ee7 v\u1ec1 <strong><a href=\"https:\/\/itviec.com\/blog\/redis-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redis l\u00e0 g\u00ec<\/a><\/strong>.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-redis-cluster-la-gi\"><strong>Redis Cluster l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>Redis Cluster l\u00e0 m\u1ed9t gi\u1ea3i ph\u00e1p ph\u00e2n t\u00e1n c\u1ee7a Redis, cho ph\u00e9p chia s\u1ebb d\u1eef li\u1ec7u gi\u1eefa nhi\u1ec1u m\u00e1y ch\u1ee7 Redis. V\u1edbi Redis Cluster, d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c ph\u00e2n t\u00e1n v\u00e0 l\u01b0u tr\u1eef tr\u00ean nhi\u1ec1u n\u00fat (nodes), gi\u00fap t\u0103ng c\u01b0\u1eddng kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng (scalability) v\u00e0 kh\u1ea3 n\u0103ng ch\u1ecbu l\u1ed7i (fault tolerance).&nbsp;<\/p>\n\n\n\n<p>Redis Cluster h\u1ed7 tr\u1ee3 t\u1ef1 \u0111\u1ed9ng ph\u00e2n v\u00f9ng d\u1eef li\u1ec7u v\u00e0 c\u00e2n b\u1eb1ng t\u1ea3i gi\u1eefa c\u00e1c n\u00fat, \u0111\u1ed3ng th\u1eddi gi\u00fap \u0111\u1ea3m b\u1ea3o t\u00ednh s\u1eb5n s\u00e0ng cao cho c\u00e1c \u1ee9ng d\u1ee5ng y\u00eau c\u1ea7u kh\u1ea3 n\u0103ng truy c\u1eadp d\u1eef li\u1ec7u nhanh ch\u00f3ng v\u00e0 li\u00ean t\u1ee5c.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-c\u1ea5u-truc-c\u1ee7a-redis-cluster\"><span class=\"ez-toc-section\" id=\"Cau_truc_cua_Redis_Cluster\"><\/span><strong>C\u1ea5u tr\u00fac c\u1ee7a Redis Cluster<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Redis Cluster c\u00f3 c\u1ea5u tr\u00fac ph\u00e2n t\u00e1n, cho ph\u00e9p Redis ho\u1ea1t \u0111\u1ed9ng \u1edf quy m\u00f4 l\u1edbn h\u01a1n v\u00e0 t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u su\u1ea5t khi l\u00e0m vi\u1ec7c v\u1edbi m\u1ed9t l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3. Redis Cluster gi\u00fap chia nh\u1ecf d\u1eef li\u1ec7u c\u1ee7a b\u1ea1n v\u00e0 ph\u00e2n ph\u1ed1i n\u00f3 qua nhi\u1ec1u m\u00e1y ch\u1ee7 kh\u00e1c nhau, gi\u00fap Redis c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng (scalable) v\u00e0 cung c\u1ea5p kh\u1ea3 n\u0103ng ch\u1ecbu l\u1ed7i cao.<\/p>\n\n\n\n<p>C\u1ea5u tr\u00fac Redis Cluster bao g\u1ed3m c\u00e1c th\u00e0nh ph\u1ea7n ch\u00ednh sau:<\/p>\n\n\n\n<p><strong>Shards (M\u1ea3nh d\u1eef li\u1ec7u)<\/strong>: Redis Cluster chia d\u1eef li\u1ec7u th\u00e0nh c\u00e1c shards (m\u1ea3nh d\u1eef li\u1ec7u). M\u1ed7i shard s\u1ebd l\u01b0u tr\u1eef m\u1ed9t ph\u1ea7n c\u1ee7a c\u01a1 s\u1edf d\u1eef li\u1ec7u Redis. Redis Cluster chia d\u1eef li\u1ec7u th\u00e0nh 16,384 hash slots v\u00e0 m\u1ed7i kh\u00f3a (key) trong Redis s\u1ebd \u0111\u01b0\u1ee3c \u00e1nh x\u1ea1 v\u00e0o m\u1ed9t trong c\u00e1c hash slots n\u00e0y th\u00f4ng qua thu\u1eadt to\u00e1n CRC16. C\u00e1c shard c\u00f3 th\u1ec3 ph\u00e2n t\u00e1n qua nhi\u1ec1u m\u00e1y ch\u1ee7 ho\u1eb7c container.<\/p>\n\n\n\n<p><strong>Master Nodes v\u00e0 Replica Nodes (N\u00fat ch\u1ee7 v\u00e0 n\u00fat sao l\u01b0u)<\/strong>: C\u1ea5u tr\u00fac n\u00e0y gi\u00fap Redis Cluster lu\u00f4n duy tr\u00ec ho\u1ea1t \u0111\u1ed9ng m\u00e0 kh\u00f4ng b\u1ecb gi\u00e1n \u0111o\u1ea1n ngay c\u1ea3 khi c\u00f3 s\u1ef1 c\u1ed1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Master Nodes (N\u00fat Ch\u1ee7)<\/strong>: L\u00e0 n\u01a1i l\u01b0u tr\u1eef d\u1eef li\u1ec7u ch\u00ednh c\u1ee7a c\u00e1c hash slots. M\u1ed7i shard c\u00f3 m\u1ed9t master node x\u1eed l\u00fd c\u00e1c y\u00eau c\u1ea7u ghi (write).<\/li>\n\n\n\n<li><strong>Replica Nodes (N\u00fat Sao L\u01b0u)<\/strong>: L\u00e0 b\u1ea3n sao c\u1ee7a master node, gi\u00fap sao l\u01b0u d\u1eef li\u1ec7u v\u00e0 cung c\u1ea5p t\u00ednh n\u0103ng ch\u1ecbu l\u1ed7i. Replica nodes ch\u1ec9 x\u1eed l\u00fd c\u00e1c y\u00eau c\u1ea7u \u0111\u1ecdc (read-only). N\u1ebfu master node g\u1eb7p s\u1ef1 c\u1ed1, m\u1ed9t replica node s\u1ebd t\u1ef1 \u0111\u1ed9ng thay th\u1ebf v\u00e0 tr\u1edf th\u00e0nh master m\u1edbi.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"redis-cluster-hoat-dong-nhu-the-nao\"><span class=\"ez-toc-section\" id=\"Redis_Cluster_hoat_dong_nhu_the_nao\"><\/span><strong>Redis Cluster ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phat-hi\u1ec7n-cac-node\"><strong>Ph\u00e1t hi\u1ec7n c\u00e1c Node<\/strong><\/h3>\n\n\n\n<p>Redis Cluster s\u1eed d\u1ee5ng <em>gossip<\/em><strong><em> <\/em><\/strong><em>protocol*<\/em> \u0111\u1ec3 c\u00e1c node trong cluster t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n v\u00e0 giao ti\u1ebfp v\u1edbi nhau. M\u1ed7i node s\u1ebd duy tr\u00ec danh s\u00e1ch c\u00e1c node kh\u00e1c trong cluster th\u00f4ng qua cluster bus port (port m\u1eb7c \u0111\u1ecbnh + 10000) v\u00e0 chia s\u1ebb th\u00f4ng tin v\u1ec1 tr\u1ea1ng th\u00e1i cluster, gi\u00fap m\u1ecdi node \u0111\u1ed3ng b\u1ed9 v\u1edbi nhau m\u00e0 kh\u00f4ng c\u1ea7n s\u1ef1 can thi\u1ec7p th\u1ee7 c\u00f4ng.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong><em>* Gossip Protocol<\/em><\/strong> <em>l\u00e0 m\u1ed9t giao th\u1ee9c ph\u00e2n t\u00e1n \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 chia s\u1ebb th\u00f4ng tin gi\u1eefa c\u00e1c node trong m\u1ed9t h\u1ec7 th\u1ed1ng m\u1ea1ng. M\u1ed7i node trong h\u1ec7 th\u1ed1ng s\u1ebd g\u1eedi v\u00e0 nh\u1eadn th\u00f4ng tin t\u1eeb c\u00e1c node kh\u00e1c m\u1ed9t c\u00e1ch \u0111\u1ecbnh k\u1ef3, gi\u1ed1ng nh\u01b0 c\u00e1ch m\u1ecdi ng\u01b0\u1eddi trao \u0111\u1ed5i th\u00f4ng tin trong m\u1ed9t cu\u1ed9c tr\u00f2 chuy\u1ec7n (gossip). Giao th\u1ee9c n\u00e0y gi\u00fap c\u00e1c node trong h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n nhau v\u00e0 \u0111\u1ed3ng b\u1ed9 tr\u1ea1ng th\u00e1i m\u00e0 kh\u00f4ng c\u1ea7n s\u1ef1 can thi\u1ec7p t\u1eeb b\u00ean ngo\u00e0i.<\/em><\/p>\n\n\n\n<p><em>Trong Redis Cluster, gossip protocol<\/em><strong><em> <\/em><\/strong><em>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 c\u00e1c node t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n c\u00e1c node m\u1edbi, duy tr\u00ec th\u00f4ng tin v\u1ec1 tr\u1ea1ng th\u00e1i c\u1ee7a cluster v\u00e0 gi\u00fap h\u1ec7 th\u1ed1ng ho\u1ea1t \u0111\u1ed9ng m\u01b0\u1ee3t m\u00e0.<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phan-chia-d\u1eef-li\u1ec7u-data-sharding\"><strong>Ph\u00e2n chia d\u1eef li\u1ec7u (Data Sharding)<\/strong><\/h3>\n\n\n\n<p>Redis Cluster chia d\u1eef li\u1ec7u th\u00e0nh c\u00e1c <strong>hash slots<\/strong> (c\u00e1c v\u1ecb tr\u00ed l\u01b0u tr\u1eef). T\u1ed5ng c\u1ed9ng c\u00f3 16384 hash slots trong cluster v\u00e0 m\u1ed7i kh\u00f3a s\u1ebd \u0111\u01b0\u1ee3c \u00e1nh x\u1ea1 v\u00e0o m\u1ed9t trong c\u00e1c slots n\u00e0y b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng h\u00e0m b\u0103m (hash function).&nbsp;<\/p>\n\n\n\n<p>D\u1eef li\u1ec7u trong c\u00e1c hash slots n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c ph\u00e2n ph\u1ed1i \u0111\u1ec1u qua c\u00e1c node trong cluster. V\u00ed d\u1ee5, trong m\u1ed9t cluster 4 node, m\u1ed7i node s\u1ebd qu\u1ea3n l\u00fd m\u1ed9t ph\u1ea1m vi c\u00e1c hash slots:<\/p>\n\n\n\n<div class=\"wp-block-greenshift-blocks-image gspb_image gspb_image-id-gsbp-523880c\" id=\"gspb_image-id-gsbp-523880c\"><img decoding=\"async\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/06\/redis-cluster-vippro.png\" data-src=\"\" alt=\"Redis Cluster - itviec blog\" loading=\"lazy\" width=\"1600\" height=\"466\"\/><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sao-chep-va-d\u1ef1-phong-master-replica-replication\"><strong>Sao ch\u00e9p v\u00e0 D\u1ef1 ph\u00f2ng (Master-Replica Replication)<\/strong><\/h3>\n\n\n\n<p>M\u1ed7i hash slot \u0111\u01b0\u1ee3c g\u00e1n cho m\u1ed9t master<strong> <\/strong>node (node ch\u00ednh) v\u00e0 d\u1eef li\u1ec7u t\u1eeb master node s\u1ebd \u0111\u01b0\u1ee3c sao ch\u00e9p v\u00e0o c\u00e1c replica<strong> <\/strong>nodes (node sao l\u01b0u). C\u00e1c node sao l\u01b0u n\u00e0y kh\u00f4ng ch\u1ec9 cung c\u1ea5p t\u00ednh d\u1ef1 ph\u00f2ng m\u00e0 c\u00f2n c\u00f3 th\u1ec3 thay th\u1ebf master node trong tr\u01b0\u1eddng h\u1ee3p x\u1ea3y ra s\u1ef1 c\u1ed1.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-client-t\u01b0\u01a1ng-tac-v\u1edbi-cluster\"><strong>Client t\u01b0\u01a1ng t\u00e1c v\u1edbi Cluster<\/strong>\u00a0<\/h3>\n\n\n\n<p>Khi client g\u1eedi y\u00eau c\u1ea7u \u0111\u1ebfn Redis Cluster, y\u00eau c\u1ea7u s\u1ebd \u0111\u01b0\u1ee3c \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn node ph\u1ee5 tr\u00e1ch c\u1ee7a kh\u00f3a \u0111\u00f3 d\u1ef1a tr\u00ean hash slot. N\u1ebfu client k\u1ebft n\u1ed1i v\u1edbi m\u1ed9t node kh\u00f4ng ph\u1ea3i l\u00e0 master c\u1ee7a kh\u00f3a, Redis s\u1ebd chuy\u1ec3n h\u01b0\u1edbng y\u00eau c\u1ea7u t\u1edbi node ch\u00ednh x\u00e1c th\u00f4ng qua c\u00e1c ph\u1ea3n h\u1ed3i nh\u01b0 <code>MOVED<\/code> ho\u1eb7c <code>ASK<\/code>, gi\u00fap vi\u1ec7c t\u01b0\u01a1ng t\u00e1c tr\u1edf n\u00ean li\u1ec1n m\u1ea1ch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ef1-ph\u1ee5c-h\u1ed3i-va-s\u1eb5n-sang-cao\"><strong>T\u1ef1 ph\u1ee5c h\u1ed3i v\u00e0 s\u1eb5n s\u00e0ng cao<\/strong><\/h3>\n\n\n\n<p>Redis Cluster c\u00f3 c\u01a1 ch\u1ebf failover t\u1ef1 \u0111\u1ed9ng. N\u1ebfu master node g\u1eb7p s\u1ef1 c\u1ed1, m\u1ed9t replica node s\u1ebd t\u1ef1 \u0111\u1ed9ng th\u0103ng c\u1ea5p l\u00e0m master m\u1edbi. Qu\u00e1 tr\u00ecnh n\u00e0y \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n th\u00f4ng qua c\u01a1 ch\u1ebf voting gi\u1eefa c\u00e1c master nodes c\u00f2n l\u1ea1i, y\u00eau c\u1ea7u s\u1ef1 \u0111\u1ed3ng \u00fd c\u1ee7a \u0111a s\u1ed1 (majority) c\u00e1c master nodes.<\/p>\n\n\n\n<p>H\u1ec7 th\u1ed1ng c\u1eadp nh\u1eadt cluster configuration v\u00e0 th\u00f4ng b\u00e1o \u0111\u1ebfn client, \u0111\u1ea3m b\u1ea3o s\u1ef1 ti\u1ebfp t\u1ee5c c\u1ee7a d\u1ecbch v\u1ee5 m\u00e0 kh\u00f4ng b\u1ecb gi\u00e1n \u0111o\u1ea1n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-c\u1ea5u-hinh-cluster\"><strong>C\u1ea5u h\u00ecnh Cluster<\/strong><\/h3>\n\n\n\n<p>C\u1ea5u h\u00ecnh c\u1ee7a Redis Cluster ch\u1ee9a th\u00f4ng tin v\u1ec1 c\u00e1c node, hash slots v\u00e0 replica. M\u1ed7i node duy tr\u00ec m\u1ed9t b\u1ea3n sao c\u1ee7a cluster configuration \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 &#8220;cluster state&#8221;. C\u1ea5u h\u00ecnh n\u00e0y \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt \u0111\u1ed9ng khi c\u00e1c node gia nh\u1eadp ho\u1eb7c r\u1eddi kh\u1ecfi cluster, gi\u00fap Redis Cluster duy tr\u00ec s\u1ef1 nh\u1ea5t qu\u00e1n v\u00e0 t\u00ednh \u1ed5n \u0111\u1ecbnh cao trong qu\u00e1 tr\u00ecnh ho\u1ea1t \u0111\u1ed9ng.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cac-tinh-nang-chinh-cua-redis-cluster\"><span class=\"ez-toc-section\" id=\"Cac_tinh_nang_chinh_cua_Redis_Cluster\"><\/span><strong>C\u00e1c t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Redis Cluster<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>(L\u01b0u \u00fd: C\u00e1c t\u00ednh n\u0103ng d\u01b0\u1edbi \u0111\u00e2y \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng cho phi\u00ean b\u1ea3n Redis 3.0 tr\u1edf \u0111i)<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Redis Cluster \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf v\u1edbi c\u00e1c m\u1ee5c ti\u00eau ch\u00ednh sau:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hi\u1ec7u-su\u1ea5t-cao-va-kh\u1ea3-nang-m\u1edf-r\u1ed9ng-tuy\u1ebfn-tinh-len-d\u1ebfn-hang-nghin-nut\"><strong>Hi\u1ec7u su\u1ea5t cao v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng tuy\u1ebfn t\u00ednh l\u00ean \u0111\u1ebfn h\u00e0ng ngh\u00ecn n\u00fat<\/strong><\/h3>\n\n\n\n<p>Redis Cluster kh\u00f4ng s\u1eed d\u1ee5ng proxy, \u00e1p d\u1ee5ng sao ch\u00e9p b\u1ea5t \u0111\u1ed3ng b\u1ed9 v\u00e0 kh\u00f4ng th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c h\u1ee3p nh\u1ea5t tr\u00ean gi\u00e1 tr\u1ecb, gi\u00fap \u0111\u1ea3m b\u1ea3o t\u1ed1c \u0111\u1ed9 truy xu\u1ea5t v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng t\u1ed1i \u01b0u.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, trong th\u1ef1c t\u1ebf th\u01b0\u1eddng \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb t\u1ed1i \u0111a v\u00e0i tr\u0103m n\u00fat \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o hi\u1ec7u su\u1ea5t t\u1ed1i \u01b0u.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-d\u1ed9-an-toan-ghi-write-t\u01b0\u01a1ng-d\u1ed1i\"><strong>\u0110\u1ed9 an to\u00e0n ghi (write) t\u01b0\u01a1ng \u0111\u1ed1i<\/strong><\/h3>\n\n\n\n<p>Redis Cluster c\u1ed1 g\u1eafng \u0111\u1ea3m b\u1ea3o r\u1eb1ng c\u00e1c thao t\u00e1c ghi t\u1eeb client s\u1ebd \u0111\u01b0\u1ee3c l\u01b0u l\u1ea1i n\u1ebfu client \u0111ang k\u1ebft n\u1ed1i v\u1edbi ph\u1ea7n l\u1edbn c\u00e1c node master trong cluster v\u00e0 network partition kh\u00f4ng x\u1ea3y ra.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, v\u1eabn c\u00f3 th\u1ec3 x\u1ea3y ra tr\u01b0\u1eddng h\u1ee3p d\u1eef li\u1ec7u b\u1ecb m\u1ea5t n\u1ebfu h\u1ec7 th\u1ed1ng g\u1eb7p s\u1ef1 c\u1ed1 b\u1ea5t ng\u1edd, nh\u1ea5t l\u00e0 khi client \u0111ang k\u1ebft n\u1ed1i v\u1edbi m\u1ed9t nh\u00f3m node nh\u1ecf l\u1ebb (thi\u1ec3u s\u1ed1) b\u1ecb t\u00e1ch ra kh\u1ecfi ph\u1ea7n c\u00f2n l\u1ea1i c\u1ee7a cluster. Nh\u1eefng t\u00ecnh hu\u1ed1ng nh\u01b0 v\u1eady \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 &#8220;failure modes&#8221; v\u00e0 ch\u00fang c\u00f3 th\u1ec3 x\u1ea3y ra trong th\u1eddi gian ng\u1eafn.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cluster-manager-qu\u1ea3n-ly-cluster\"><strong>Cluster Manager (Qu\u1ea3n l\u00fd Cluster)<\/strong><\/h3>\n\n\n\n<p>Qu\u1ea3n l\u00fd to\u00e0n b\u1ed9 Redis Cluster, bao g\u1ed3m vi\u1ec7c ph\u00e2n ph\u1ed1i v\u00e0 t\u00e1i ph\u00e2n ph\u1ed1i d\u1eef li\u1ec7u gi\u1eefa c\u00e1c node. Cluster Manager t\u1ef1 \u0111\u1ed9ng th\u1ef1c hi\u1ec7n vi\u1ec7c t\u00e1i ph\u00e2n ph\u1ed1i d\u1eef li\u1ec7u (re-sharding) v\u00e0 \u0111\u1ea3m b\u1ea3o d\u1eef li\u1ec7u lu\u00f4n c\u00f3 s\u1eb5n khi c\u00f3 s\u1ef1 c\u1ed1 x\u1ea3y ra.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tinh-s\u1eb5n-sang-cao-va-khoi-ph\u1ee5c-sau-l\u1ed7i\"><strong>T\u00ednh s\u1eb5n s\u00e0ng cao v\u00e0 kh\u00f4i ph\u1ee5c sau l\u1ed7i<\/strong><\/h3>\n\n\n\n<p>Redis Cluster h\u1ed7 tr\u1ee3 t\u00ednh n\u0103ng failover t\u1ef1 \u0111\u1ed9ng. Ngh\u0129a l\u00e0 khi m\u1ed9t master node g\u1eb7p s\u1ef1 c\u1ed1, h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n m\u1ed9t replica node th\u00e0nh master m\u1edbi m\u00e0 kh\u00f4ng c\u1ea7n can thi\u1ec7p t\u1eeb ng\u01b0\u1eddi qu\u1ea3n tr\u1ecb.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-kh\u1ea3-nang-m\u1edf-r\u1ed9ng\"><strong>Kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng<\/strong><\/h3>\n\n\n\n<p>Redis Cluster h\u1ed7 tr\u1ee3 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng theo chi\u1ec1u ngang (horizontal scaling), t\u1ee9c l\u00e0 c\u00f3 th\u1ec3 th\u00eam nhi\u1ec1u node v\u00e0o cluster \u0111\u1ec3 t\u0103ng c\u01b0\u1eddng kh\u1ea3 n\u0103ng x\u1eed l\u00fd v\u00e0 m\u1edf r\u1ed9ng h\u1ec7 th\u1ed1ng. Qu\u00e1 tr\u00ecnh m\u1edf r\u1ed9ng n\u00e0y c\u00f3 th\u1ec3 di\u1ec5n ra m\u00e0 kh\u00f4ng g\u00e2y gi\u00e1n \u0111o\u1ea1n d\u1ecbch v\u1ee5 (v\u1edbi m\u1ed9t s\u1ed1 h\u1ea1n ch\u1ebf nh\u1ea5t \u0111\u1ecbnh).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"huong-dan-su-dung-redis-cluster-co-ban\"><span class=\"ez-toc-section\" id=\"Huong_dan_su_dung_Redis_Cluster_co_ban\"><\/span><strong>H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng Redis Cluster c\u01a1 b\u1ea3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"thiet-lap-redis-cluster\"><strong>Thi\u1ebft l\u1eadp Redis Cluster<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-cai-d\u1eb7t-redis-cluster-th\u1ee7-cong-tren-may-th\u1eadt-ho\u1eb7c-may-\u1ea3o\"><strong>C\u00e0i \u0111\u1eb7t Redis Cluster th\u1ee7 c\u00f4ng tr\u00ean m\u00e1y th\u1eadt ho\u1eb7c m\u00e1y \u1ea3o<\/strong><\/h4>\n\n\n\n<p>\u0110\u1ec3 kh\u1edfi t\u1ea1o m\u1ed9t Redis Cluster, ta c\u1ea7n \u00edt nh\u1ea5t 3 node ch\u00ednh (master). M\u1ed7i master n\u00ean c\u00f3 \u00edt nh\u1ea5t m\u1ed9t b\u1ea3n sao (replica) \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o d\u1eef li\u1ec7u kh\u00f4ng m\u1ea5t n\u1ebfu m\u1ed9t node b\u1ecb l\u1ed7i. V\u00ec v\u1eady, b\u1ea1n n\u00ean chu\u1ea9n b\u1ecb t\u1ed1i thi\u1ec3u 6 instance Redis v\u00e0 \u0111\u1ea3m b\u1ea3o t\u1ed1i thi\u1ec3u 3 master nodes \u0111\u1ec3 tr\u00e1nh t\u00ecnh tr\u1ea1ng split-brain (cluster b\u1ecb ph\u00e2n t\u00e1ch d\u1eabn \u0111\u1ebfn m\u1ea5t \u0111\u1ed3ng b\u1ed9 d\u1eef li\u1ec7u).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u01b0\u1edbc 1: C\u00e0i Redis:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update &amp;&amp; sudo apt install redis-server -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u01b0\u1edbc 2: <\/strong>T\u1ea1o nhi\u1ec1u instance Redis tr\u00ean c\u00e1c port kh\u00e1c nhau: Ta s\u1ebd t\u1ea1o 6 Redis instance ch\u1ea1y n\u1ec1n v\u1edbi c\u1ea5u h\u00ecnh cluster.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-server --port 7000 --cluster-enabled yes --cluster-config-file nodes-7000.conf \\\n--cluster-node-timeout 5000 --appendonly yes --dbfilename dump-7000.rdb \\\n--logfile 7000.log --daemonize yes<\/code><\/pre>\n\n\n\n<p>Th\u1ef1c hi\u1ec7n t\u01b0\u01a1ng t\u1ef1 v\u1edbi c\u00e1c port 7001, 7002, 7003, 7004, 7005.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u01b0\u1edbc 3: Kh\u1edfi t\u1ea1o cluster:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \\\n127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-thi\u1ebft-l\u1eadp-redis-cluster-b\u1eb1ng-docker\"><strong>Thi\u1ebft l\u1eadp Redis Cluster b\u1eb1ng Docker<\/strong><\/h4>\n\n\n\n<p>Ngo\u00e0i c\u00e1ch kh\u1edfi t\u1ea1o Redis Cluster th\u1ee7 c\u00f4ng, b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Docker \u0111\u1ec3 tri\u1ec3n khai nhanh v\u00e0 d\u1ec5 qu\u1ea3n l\u00fd h\u01a1n, \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch khi mu\u1ed1n m\u00f4 ph\u1ecfng cluster tr\u00ean m\u00e1y local m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea1o nhi\u1ec1u file c\u1ea5u h\u00ecnh ph\u1ee9c t\u1ea1p.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u01b0\u1edbc 1: T\u1ea1o Docker network:&nbsp;<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker network create redis-cluster-net<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u01b0\u1edbc 2: T\u1ea1o 6 container Redis tr\u00ean c\u00e1c port 7000\u20137005:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>for port in 7000 7001 7002 7003 7004 7005; do\n  docker run -d --name redis-$port --net redis-cluster-net \\\n  -p $port:$port -v redis-$port-data:\/data redis:7-alpine redis-server --port $port \\\n  --cluster-enabled yes --cluster-config-file nodes.conf \\\n  --cluster-node-timeout 5000 --appendonly yes --protected-mode no\n\ndone<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u01b0\u1edbc 3: T\u1ea1o Redis Cluster:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># \u0110\u1ee3i containers kh\u1edfi \u0111\u1ed9ng ho\u00e0n to\u00e0n\nsleep 10\n\n# L\u1ea5y IP addresses c\u1ee7a containers\nredis_ips=\"\"\nfor port in 7000 7001 7002 7003 7004 7005; do\n  ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-$port)\n  redis_ips=\"$redis_ips $ip:$port\"\ndone\n\n# T\u1ea1o cluster\ndocker exec -it redis-7000 redis-cli --cluster create $redis_ips --cluster-replicas 1<\/code><\/pre>\n\n\n\n<p>Sau \u0111\u00f3 b\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c h\u1ecfi x\u00e1c nh\u1eadn yes, sau \u0111\u00f3 c\u1ee5m Redis s\u1ebd \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tuong-tac-voi-redis-cluster\"><strong>T\u01b0\u01a1ng t\u00e1c v\u1edbi Redis Cluster&nbsp;<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"ket-noi-voi-redis-cluster\">K\u1ebft n\u1ed1i v\u1edbi Redis Cluster<\/h4>\n\n\n\n<p>Khi \u0111\u00e3 c\u00f3 Redis Cluster ho\u1ea1t \u0111\u1ed9ng, ta c\u00f3 th\u1ec3 k\u1ebft n\u1ed1i v\u00e0o m\u1ed9t node b\u1ea5t k\u1ef3 b\u1eb1ng:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-cli -c -p 7000<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tham s\u1ed1 <code>-c<\/code> gi\u00fap <strong><a href=\"https:\/\/itviec.com\/blog\/redis-cli-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redis CLI<\/a><\/strong> hi\u1ec3u v\u1ec1 cluster v\u00e0 t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n h\u01b0\u1edbng truy v\u1ea5n \u0111\u1ebfn \u0111\u00fang node n\u1ebfu key kh\u00f4ng thu\u1ed9c node hi\u1ec7n t\u1ea1i.<\/li>\n\n\n\n<li>Tham s\u1ed1 <code>-p<\/code> ch\u1ec9 \u0111\u1ecbnh port c\u1ee7a node mu\u1ed1n k\u1ebft n\u1ed1i.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"lam-viec-voi-du-lieu\"><strong>L\u00e0m vi\u1ec7c v\u1edbi d\u1eef li\u1ec7u<\/strong><\/h4>\n\n\n\n<p>V\u00ed d\u1ee5 ta <code>set<\/code> v\u00e0 <code>get<\/code> m\u1ed9t key nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET mykey \"hello\"\nGET mykey<\/code><\/pre>\n\n\n\n<p>Redis s\u1ebd t\u1ef1 x\u00e1c \u0111\u1ecbnh key n\u00e0y thu\u1ed9c slot n\u00e0o (s\u1eed d\u1ee5ng CRC16 hash) v\u00e0 g\u1eedi truy v\u1ea5n t\u1edbi node \u0111ang qu\u1ea3n l\u00fd slot \u0111\u00f3.<\/p>\n\n\n\n<p><strong>L\u01b0u \u00fd v\u1ec1 Multi-key operations:<\/strong> L\u1ec7nh n\u00e0y s\u1ebd KH\u00d4NG ho\u1ea1t \u0111\u1ed9ng trong cluster mode n\u1ebfu keys \u1edf c\u00e1c slots kh\u00e1c nhau nh\u01b0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MGET key1 key2 key3<\/code><\/pre>\n\n\n\n<p>Thay v\u00e0o \u0111\u00f3, s\u1eed d\u1ee5ng hash tags \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o keys \u1edf c\u00f9ng slot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SET {user:123}:name \"Alice\"\nSET {user:123}:email \"alice@example.com\"\nMGET {user:123}:name {user:123}:email<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"xac-dinh-vi-tri-key\"><strong>X\u00e1c \u0111\u1ecbnh v\u1ecb tr\u00ed key<\/strong><\/h4>\n\n\n\n<p>\u0110\u1ec3 bi\u1ebft key thu\u1ed9c slot n\u00e0o, ta d\u00f9ng:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CLUSTER KEYSLOT mykey<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3 s\u1ebd tr\u1ea3 v\u1ec1 s\u1ed1 slot (0-16383) m\u00e0 key \u0111\u01b0\u1ee3c g\u00e1n v\u00e0o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"giam-sat-redis-cluster\"><strong>Gi\u00e1m s\u00e1t Redis Cluster<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"kiem-tra-trang-thai-cluster\"><strong>Ki\u1ec3m tra tr\u1ea1ng th\u00e1i cluster<\/strong><\/h4>\n\n\n\n<p>Ta d\u00f9ng l\u1ec7nh sau \u0111\u1ec3 bi\u1ebft cluster \u0111ang ho\u1ea1t \u0111\u1ed9ng \u1ed5n kh\u00f4ng, c\u00f3 node n\u00e0o b\u1ecb l\u1ed7i kh\u00f4ng.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CLUSTER INFO<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"danh-sach-cac-node-trong-cluster\"><strong>Danh s\u00e1ch c\u00e1c node trong cluster<\/strong><\/h4>\n\n\n\n<p>Ta d\u00f9ng l\u1ec7nh sau \u0111\u1ec3 bi\u1ebft c\u00e1c node trong c\u1ee5m, vai tr\u00f2 (master\/replica), ID v\u00e0 t\u00ecnh tr\u1ea1ng c\u1ee7a ch\u00fang:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CLUSTER NODES<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"theo-doi-hoat-dong-truc-tiep\"><strong>Theo d\u00f5i ho\u1ea1t \u0111\u1ed9ng tr\u1ef1c ti\u1ebfp<\/strong><\/h4>\n\n\n\n<p>L\u1ec7nh sau s\u1ebd gi\u00fap xem t\u1ea5t c\u1ea3 c\u00e1c l\u1ec7nh \u0111ang g\u1eedi t\u1edbi Redis theo th\u1eddi gian th\u1ef1c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MONITOR<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cac-l\u1ec7nh-giam-sat-khac\"><strong>C\u00e1c l\u1ec7nh gi\u00e1m s\u00e1t kh\u00e1c<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Ki\u1ec3m tra slot mapping\nCLUSTER SLOTS\n\n# Ki\u1ec3m tra replica c\u1ee7a master c\u1ee5 th\u1ec3\nCLUSTER REPLICAS &lt;master-node-id&gt;\n\n# Th\u1ed1ng k\u00ea v\u1ec1 cluster\nINFO replication\nINFO cluster<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-qu\u1ea3n-ly-nang-cao\"><strong>Qu\u1ea3n l\u00fd n\u00e2ng cao<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"failover-tu-dong\"><strong>Failover t\u1ef1 \u0111\u1ed9ng<\/strong><\/h4>\n\n\n\n<p>N\u1ebfu m\u1ed9t master b\u1ecb l\u1ed7i, Redis Cluster s\u1ebd t\u1ef1 \u0111\u1ed9ng b\u1ea7u ch\u1ecdn m\u1ed9t replica th\u00e0nh master m\u1edbi \u0111\u1ec3 ti\u1ebfp t\u1ee5c ph\u1ee5c v\u1ee5 \u1ee9ng d\u1ee5ng th\u00f4ng qua qu\u00e1 tr\u00ecnh voting. Qu\u00e1 tr\u00ecnh n\u00e0y y\u00eau c\u1ea7u \u0111a s\u1ed1 (majority) c\u00e1c master nodes c\u00f2n l\u1ea1i \u0111\u1ed3ng \u00fd.<\/p>\n\n\n\n<p>Th\u1eddi gian failover th\u01b0\u1eddng dao \u0111\u1ed9ng t\u1eeb v\u00e0i gi\u00e2y \u0111\u1ebfn 30 gi\u00e2y t\u00f9y thu\u1ed9c v\u00e0o c\u1ea5u h\u00ecnh <code>cluster-node-timeout<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># K\u1ebft n\u1ed1i \u0111\u1ebfn replica node mu\u1ed1n promote\nredis-cli -p 7003\nCLUSTER FAILOVER\n\n# Ho\u1eb7c force failover (kh\u00f4ng c\u1ea7n ch\u1edd sync t\u1eeb master)\nCLUSTER FAILOVER FORCE<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-them-node-m\u1edbi\"><strong>Th\u00eam node m\u1edbi<\/strong><\/h4>\n\n\n\n<p>Khi h\u1ec7 th\u1ed1ng l\u1edbn d\u1ea7n, ta c\u00f3 th\u1ec3 th\u00eam node m\u1edbi b\u1eb1ng l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-server --port 7006 --cluster-enabled yes &#91;...]<\/code><\/pre>\n\n\n\n<p>Sau \u0111\u00f3:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000\n# 127.0.0.1:7006 l\u00e0 node m\u1edbi, 127.0.0.1:7000 l\u00e0 node \u0111\u00e3 c\u00f3 trong cluster<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"di-chuyen-hash-slot-giua-cac-node-resharding\"><strong>Di chuy\u1ec3n hash slot gi\u1eefa c\u00e1c node (resharding)<\/strong><\/h4>\n\n\n\n<p>Khi th\u00eam node m\u1edbi, ta c\u00f3 th\u1ec3 ph\u00e2n b\u1ed5 l\u1ea1i c\u00e1c slot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-cli --cluster reshard 127.0.0.1:7000<\/code><\/pre>\n\n\n\n<p>B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u nh\u1eadp s\u1ed1 slot, node ngu\u1ed3n v\u00e0 node \u0111\u00edch.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"xoa-node-khoi-cluster\"><strong>Xo\u00e1 node kh\u1ecfi cluster<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>redis-cli --cluster del-node 127.0.0.1:7000 &lt;node-id&gt;<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3: <code>Node-id<\/code> l\u00e0 node c\u1ea7n xo\u00e1.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cau-hoi-thuong-gap-ve-redis-cluster\"><span class=\"ez-toc-section\" id=\"Cau_hoi_thuong_gap_ve_Redis_Cluster\"><\/span><strong>C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Redis Cluster<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"redis-cache-va-redis-cluster-khac-nhau-nhung-gi-gi\"><strong>Redis cache v\u00e0 redis cluster kh\u00e1c nhau nh\u1eefng g\u00ec gi?<\/strong><\/h3>\n\n\n\n<p><strong><a href=\"https:\/\/itviec.com\/blog\/redis-cache-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redis Cache<\/a><\/strong> l\u00e0 c\u00e1ch s\u1eed d\u1ee5ng Redis nh\u01b0 m\u1ed9t b\u1ed9 nh\u1edb \u0111\u1ec7m (cache) \u0111\u01a1n gi\u1ea3n, th\u01b0\u1eddng ch\u1ea1y tr\u00ean 1 instance duy nh\u1ea5t. N\u00f3 ph\u00f9 h\u1ee3p cho c\u00e1c \u1ee9ng d\u1ee5ng nh\u1ecf ho\u1eb7c khi ch\u1ec9 c\u1ea7n t\u1ed1c \u0111\u1ed9 truy xu\u1ea5t d\u1eef li\u1ec7u nhanh m\u00e0 kh\u00f4ng c\u1ea7n ph\u00e2n t\u00e1n.<\/p>\n\n\n\n<p>Trong khi \u0111\u00f3, Redis Cluster l\u00e0 ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n cho ph\u00e9p ch\u1ea1y Redis tr\u00ean nhi\u1ec1u node, chia d\u1eef li\u1ec7u th\u00e0nh c\u00e1c ph\u1ea7n nh\u1ecf (hash slot) v\u00e0 ph\u00e2n ph\u1ed1i gi\u1eefa c\u00e1c node. Redis cluster h\u1ed7 tr\u1ee3 t\u00ednh s\u1eb5n s\u00e0ng cao (high availability) v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng (scalability) t\u1ed1t h\u01a1n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mo-rong-tuyen-tinh-linear-scalability-la-gi\"><strong>M\u1edf r\u1ed9ng tuy\u1ebfn t\u00ednh (<\/strong><strong>linear scalability) l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>Linear scalability (m\u1edf r\u1ed9ng tuy\u1ebfn t\u00ednh) ngh\u0129a l\u00e0 khi b\u1ea1n t\u0103ng s\u1ed1 l\u01b0\u1ee3ng node trong Redis Cluster, hi\u1ec7u su\u1ea5t (s\u1ed1 l\u01b0\u1ee3ng truy v\u1ea5n\/gi\u00e2y) c\u0169ng t\u0103ng g\u1ea7n nh\u01b0 t\u01b0\u01a1ng \u1ee9ng. V\u00ed d\u1ee5 n\u1ebfu 3 node x\u1eed l\u00fd \u0111\u01b0\u1ee3c 30K request\/gi\u00e2y, th\u00ec 6 node c\u00f3 th\u1ec3 x\u1eed l\u00fd kho\u1ea3ng 60K request\/gi\u00e2y.<\/p>\n\n\n\n<p>\u0110i\u1ec1u n\u00e0y gi\u00fap Redis Cluster \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c nhu c\u1ea7u t\u0103ng tr\u01b0\u1edfng l\u1edbn v\u1ec1 d\u1eef li\u1ec7u v\u00e0 l\u01b0u l\u01b0\u1ee3ng ng\u01b0\u1eddi d\u00f9ng m\u00e0 kh\u00f4ng g\u00e2y ngh\u1ebdn h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"han-che-cua-redis-cluster-la-gi\"><strong>H\u1ea1n ch\u1ebf c\u1ee7a Redis Cluster l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>Redis Cluster tuy m\u1ea1nh m\u1ebd nh\u01b0ng v\u1eabn c\u00f3 m\u1ed9t s\u1ed1 h\u1ea1n ch\u1ebf:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kh\u00f4ng h\u1ed7 tr\u1ee3 c\u00e1c l\u1ec7nh li\u00ean quan \u0111\u1ebfn nhi\u1ec1u key n\u1eb1m tr\u00ean c\u00e1c hash slot kh\u00e1c nhau, tr\u1eeb khi d\u00f9ng <code>CROSSSLOT<\/code> workaround ho\u1eb7c c\u00e1c k\u1ef9 thu\u1eadt t\u00e1ch key.<\/li>\n\n\n\n<li>Failover kh\u00f4ng ho\u00e0n to\u00e0n an to\u00e0n: v\u1eabn c\u00f3 m\u1ed9t kho\u1ea3ng th\u1eddi gian ng\u1eafn c\u00f3 th\u1ec3 m\u1ea5t d\u1eef li\u1ec7u n\u1ebfu master node ch\u01b0a k\u1ecbp sync d\u1eef li\u1ec7u sang replica tr\u01b0\u1edbc khi b\u1ecb l\u1ed7i.<\/li>\n\n\n\n<li>Kh\u00f4ng h\u1ed7 tr\u1ee3 transaction ki\u1ec3u <code>MULTI\/EXEC<\/code> li\u00ean key \u1edf nhi\u1ec1u slot kh\u00e1c nhau<\/li>\n\n\n\n<li>T\u0103ng \u0111\u1ed9 ph\u1ee9c t\u1ea1p khi qu\u1ea3n l\u00fd nh\u1ea5t l\u00e0 khi th\u00eam node, resharding ho\u1eb7c x\u1eed l\u00fd l\u1ed7i m\u1ea1ng.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tong-ket\"><span class=\"ez-toc-section\" id=\"Tong_ket\"><\/span><strong>T\u1ed5ng k\u1ebft<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Redis Cluster kh\u00f4ng ch\u1ec9 \u0111\u01a1n thu\u1ea7n l\u00e0 m\u1ed9t c\u00e1ch tri\u1ec3n khai n\u00e2ng cao c\u1ee7a Redis m\u00e0 c\u00f2n l\u00e0 m\u1ed9t gi\u1ea3i ph\u00e1p thi\u1ebft y\u1ebfu cho b\u1ea5t k\u1ef3 h\u1ec7 th\u1ed1ng n\u00e0o c\u1ea7n kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng quy m\u00f4, \u0111\u1ed9 tin c\u1eady cao v\u00e0 x\u1eed l\u00fd d\u1eef li\u1ec7u ph\u00e2n t\u00e1n hi\u1ec7u qu\u1ea3. Vi\u1ec7c n\u1eafm v\u1eefng c\u00e1ch thi\u1ebft l\u1eadp, t\u01b0\u01a1ng t\u00e1c, gi\u00e1m s\u00e1t v\u00e0 qu\u1ea3n l\u00fd Redis Cluster s\u1ebd gi\u00fap b\u1ea1n ch\u1ee7 \u0111\u1ed9ng h\u01a1n trong vi\u1ec7c x\u00e2y d\u1ef1ng nh\u1eefng h\u1ec7 th\u1ed1ng backend l\u1edbn, c\u00f3 th\u1ec3 ch\u1ecbu t\u1ea3i cao v\u00e0 ph\u1ee5c v\u1ee5 h\u00e0ng ngh\u00ecn \u0111\u1ebfn h\u00e0ng tri\u1ec7u ng\u01b0\u1eddi d\u00f9ng m\u1ed9t c\u00e1ch \u1ed5n \u0111\u1ecbnh.<\/p>\n\n\n\n<p>ITviec hy v\u1ecdng b\u00e0i vi\u1ebft tr\u00ean \u0111\u00e3 cung c\u1ea5p th\u00f4ng tin h\u1eefu \u00edch gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 Redis Cluster c\u0169ng nh\u01b0 c\u00e1ch tri\u1ec3n khai v\u00e0 \u1ee9ng d\u1ee5ng v\u00e0o th\u1ef1c t\u1ebf.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redis l\u00e0 m\u1ed9t trong nh\u1eefng h\u1ec7 th\u1ed1ng l\u01b0u tr\u1eef in-memory ph\u1ed5 bi\u1ebfn nh\u1ea5t hi\u1ec7n nay. Tuy nhi\u00ean, khi h\u1ec7 th\u1ed1ng ph\u00e1t tri\u1ec3n l\u1edbn, b\u1ea1n c\u1ea7n m\u1ed9t gi\u1ea3i ph\u00e1p c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng, ph\u00e2n ph\u1ed1i d\u1eef li\u1ec7u, v\u00e0 \u0111\u1ea3m b\u1ea3o lu\u00f4n s\u1eb5n s\u00e0ng khi c\u00f3 s\u1ef1 c\u1ed1 \u2013 \u0111\u00f3 ch\u00ednh l\u00e0 l\u00fac Redis cluster ph\u00e1t huy [&hellip;]<\/p>\n","protected":false},"author":209,"featured_media":88996,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"#gspb_image-id-gsbp-523880c img{vertical-align:top;display:inline-block;box-sizing:border-box;max-width:100%;height:auto}","footnotes":""},"categories":[109],"tags":[],"class_list":["post-88535","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi - ITviec Blog<\/title>\n<meta name=\"description\" content=\"T\u00ecm hi\u1ec3u chi ti\u1ebft v\u1ec1 Redis Cluster t\u1eeb setup, tri\u1ec3n khai \u0111\u1ebfn c\u00e1ch thi\u1ebft l\u1eadp, s\u1eed d\u1ee5ng, gi\u00e1m s\u00e1t, m\u1edf r\u1ed9ng k\u00e8m m\u00e3 l\u1ec7nh v\u00e0 v\u00ed d\u1ee5 th\u1ef1c t\u1ebf.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi\" \/>\n<meta property=\"og:description\" content=\"Redis l\u00e0 m\u1ed9t trong nh\u1eefng h\u1ec7 th\u1ed1ng l\u01b0u tr\u1eef in-memory ph\u1ed5 bi\u1ebfn nh\u1ea5t hi\u1ec7n nay. Tuy nhi\u00ean, khi h\u1ec7 th\u1ed1ng ph\u00e1t tri\u1ec3n l\u1edbn, b\u1ea1n c\u1ea7n m\u1ed9t gi\u1ea3i ph\u00e1p c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-05T15:59:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-05T15:59:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/redis-cluster-la-gi-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1347\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"M\u1ef9 Duy\u00ean\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"M\u1ef9 Duy\u00ean\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi - ITviec Blog","description":"T\u00ecm hi\u1ec3u chi ti\u1ebft v\u1ec1 Redis Cluster t\u1eeb setup, tri\u1ec3n khai \u0111\u1ebfn c\u00e1ch thi\u1ebft l\u1eadp, s\u1eed d\u1ee5ng, gi\u00e1m s\u00e1t, m\u1edf r\u1ed9ng k\u00e8m m\u00e3 l\u1ec7nh v\u00e0 v\u00ed d\u1ee5 th\u1ef1c t\u1ebf.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi","og_description":"Redis l\u00e0 m\u1ed9t trong nh\u1eefng h\u1ec7 th\u1ed1ng l\u01b0u tr\u1eef in-memory ph\u1ed5 bi\u1ebfn nh\u1ea5t hi\u1ec7n nay. Tuy nhi\u00ean, khi h\u1ec7 th\u1ed1ng ph\u00e1t tri\u1ec3n l\u1edbn, b\u1ea1n c\u1ea7n m\u1ed9t gi\u1ea3i ph\u00e1p c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng,","og_url":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-07-05T15:59:45+00:00","article_modified_time":"2025-07-05T15:59:48+00:00","og_image":[{"width":2560,"height":1347,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/redis-cluster-la-gi-scaled.png","type":"image\/png"}],"author":"M\u1ef9 Duy\u00ean","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"M\u1ef9 Duy\u00ean","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"14 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/"},"author":{"name":"M\u1ef9 Duy\u00ean","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/73733c0725c7e39e696a896bd1abe2d7"},"headline":"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi","datePublished":"2025-07-05T15:59:45+00:00","dateModified":"2025-07-05T15:59:48+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/"},"wordCount":3705,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/redis-cluster-la-gi-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/","url":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/","name":"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/redis-cluster-la-gi-scaled.png","datePublished":"2025-07-05T15:59:45+00:00","dateModified":"2025-07-05T15:59:48+00:00","description":"T\u00ecm hi\u1ec3u chi ti\u1ebft v\u1ec1 Redis Cluster t\u1eeb setup, tri\u1ec3n khai \u0111\u1ebfn c\u00e1ch thi\u1ebft l\u1eadp, s\u1eed d\u1ee5ng, gi\u00e1m s\u00e1t, m\u1edf r\u1ed9ng k\u00e8m m\u00e3 l\u1ec7nh v\u00e0 v\u00ed d\u1ee5 th\u1ef1c t\u1ebf.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/redis-cluster-la-gi-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/07\/redis-cluster-la-gi-scaled.png","width":800,"height":421,"caption":"redis cluster l\u00e0 g\u00ec - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/redis-cluster-la-gi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"Redis Cluster l\u00e0 g\u00ec: H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n cho ng\u01b0\u1eddi m\u1edbi"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/73733c0725c7e39e696a896bd1abe2d7","name":"M\u1ef9 Duy\u00ean","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/Author_Duyen-Tran-120x120.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/Author_Duyen-Tran-120x120.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/Author_Duyen-Tran-120x120.jpg","caption":"M\u1ef9 Duy\u00ean"},"url":"https:\/\/itviec.com\/blog\/author\/my-duyen\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/88535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/209"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=88535"}],"version-history":[{"count":3,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/88535\/revisions"}],"predecessor-version":[{"id":88995,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/88535\/revisions\/88995"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/88996"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=88535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=88535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=88535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}