{"id":527,"date":"2025-01-20T15:10:12","date_gmt":"2025-01-20T07:10:12","guid":{"rendered":"http:\/\/8.141.4.74\/?p=527"},"modified":"2025-01-20T15:10:12","modified_gmt":"2025-01-20T07:10:12","slug":"redis%e4%b8%bb%e4%bb%8e%e5%a4%8d%e5%88%b6%e4%bb%a5%e5%8f%8acluster%e9%85%8d%e7%bd%ae","status":"publish","type":"post","link":"http:\/\/8.141.4.74\/?p=527","title":{"rendered":"Redis\u4e3b\u4ece\u590d\u5236\u4ee5\u53cacluster\u914d\u7f6e"},"content":{"rendered":"<h1>7.Redis \u4e3b\u4ece\u590d\u5236<\/h1>\n<h2>7.1 Redis \u4e3b\u4ece\u590d\u5236\u7684\u57fa\u672c\u6982\u5ff5<\/h2>\n<ol>\n<li><strong>\u4e3b\u8282\u70b9\uff08Master\uff09\u4e0e\u4ece\u8282\u70b9\uff08Replica\uff09<\/strong>\n<ul>\n<li>\u5728 Redis \u672f\u8bed\u4e2d\uff0c\u4f20\u7edf\u79f0\u547c\u662f <em>Master<\/em> \u548c <em>Slave<\/em>\uff0c\u4ece 5.0 \u5f00\u59cb\u793e\u533a\u503e\u5411\u4f7f\u7528 <em>Master<\/em> \u548c <em>Replica<\/em> \u6765\u66ff\u4ee3\u3002<\/li>\n<li>Master \u8d1f\u8d23\u5904\u7406\u5199\u8bf7\u6c42\uff0c\u5e76\u5c06\u5199\u64cd\u4f5c\u540c\u6b65\u5230 Replica\uff1bReplica \u8d1f\u8d23\u63a5\u6536 Master \u540c\u6b65\u8fc7\u6765\u7684\u6570\u636e\uff0c\u5e76\u5bf9\u5916\u63d0\u4f9b\u8bfb\u670d\u52a1\uff08\u5982\u679c\u914d\u7f6e\u4e86 <code>replica-read-only no<\/code>\uff0c\u4e5f\u53ef\u4ee5\u5199\uff0c\u4f46\u901a\u5e38\u4e0d\u5efa\u8bae\u8fd9\u6837\u505a\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5f02\u6b65\u590d\u5236\uff08Asynchronous Replication\uff09<\/strong>\n<ul>\n<li>Redis \u7684\u4e3b\u4ece\u590d\u5236\u672c\u8d28\u4e0a\u662f <strong>\u5f02\u6b65\u590d\u5236<\/strong>\uff0c\u5373 Master \u5728\u5c06\u5199\u64cd\u4f5c\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u540e\uff0c\u4f1a\u5728\u540e\u53f0\u5c06\u6570\u636e\u540c\u6b65\u7ed9 Replica\u3002<\/li>\n<li>\u5bf9\u4e8e\u5f3a\u4e00\u81f4\u6027\u8981\u6c42\u8f83\u9ad8\u7684\u573a\u666f\uff0c\u9700\u8981\u505a\u989d\u5916\u7684\u914d\u7f6e\u6216\u5904\u7406\uff08\u5982 Wait\u3001min-replicas-to-write \u7b49\u673a\u5236\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>Sentinel \u4e0e Cluster \u6a21\u5f0f<\/strong>\n<ul>\n<li>Sentinel \u662f Redis \u63d0\u4f9b\u7684\u81ea\u52a8\u6545\u969c\u68c0\u6d4b\u4e0e\u4e3b\u4ece\u5207\u6362\u7684\u5de5\u5177\uff0c\u901a\u8fc7\u76d1\u542c\u4e3b\u8282\u70b9\u7684\u5065\u5eb7\u5ea6\uff0c\u6765\u8fdb\u884c\u81ea\u52a8\u5316\u7684\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<li>Cluster \u6a21\u5f0f\u5219\u662f Redis \u5b98\u65b9\u63a8\u8350\u7684\u591a\u8282\u70b9\u5206\u7247\u65b9\u6848\uff0c\u540c\u6837\u5177\u5907\u90e8\u5206\u81ea\u52a8\u7684\u6545\u969c\u8f6c\u79fb\u80fd\u529b\uff0c\u4e14\u66f4\u9002\u5408\u4e8e\u5206\u5e03\u5f0f\u6c34\u5e73\u6269\u5c55\u7684\u573a\u666f\u3002<\/li>\n<li>\u65e0\u8bba\u4f7f\u7528 Sentinel \u8fd8\u662f Cluster\uff0c\u672c\u8d28\u4e0a\u90fd\u57fa\u4e8e\u4e3b\u4ece\uff08\u4e3b\u5907\uff09\u590d\u5236\u6765\u5b9e\u73b0\u9ad8\u53ef\u7528\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>7.2 Redis \u4e3b\u4ece\u590d\u5236\u7684\u5de5\u4f5c\u6d41\u7a0b<\/h2>\n<p>\u8981\u7406\u89e3 Redis 7.4 \u7684\u590d\u5236\u7279\u6027\uff0c\u6211\u4eec\u5148\u56de\u987e\u4e00\u4e0b Redis \u5728 2.8 \u4e4b\u540e\u5f15\u5165\u7684 <strong>PSYNC\uff08\u90e8\u5206\u91cd\u540c\u6b65\uff09<\/strong> \u673a\u5236\uff0c\u4ee5\u53ca 6.x\u30017.x \u4e2d\u7684\u6539\u8fdb\u3002\u5b83\u4eec\u5728\u5e95\u5c42\u67b6\u6784\u4e0a\u6ca1\u6709\u6839\u672c\u6027\u53d8\u5316\uff0c\u4f46\u5bf9\u590d\u5236\u7684\u7a33\u5b9a\u6027\u3001\u5185\u5b58\u4f7f\u7528\u548c\u7f51\u7edc\u6d88\u8017\u505a\u4e86\u4f18\u5316\u3002<\/p>\n<ol>\n<li><strong>\u521d\u6b21\u5168\u91cf\u590d\u5236\uff08Full Synchronization\uff09<\/strong>\n<ul>\n<li>\u5f53 Replica \u8282\u70b9\u7b2c\u4e00\u6b21\u5411 Master \u53d1\u8d77\u590d\u5236\u8bf7\u6c42\uff0c\u6216\u8005\u590d\u5236\u72b6\u6001\u5931\u6548\uff08\u65e0\u6cd5\u8fdb\u884c\u90e8\u5206\u91cd\u540c\u6b65\uff09\u65f6\uff0c\u4f1a\u89e6\u53d1\u4e00\u6b21 \u201c\u5168\u91cf\u590d\u5236\u201d\u3002<\/li>\n<li>Master \u4f1a\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\uff1a\n<ol>\n<li>\u89e6\u53d1\u4fdd\u5b58 RDB \u6587\u4ef6\uff08\u6216\u8005\u4f7f\u7528\u5df2\u6709\u7684 RDB \u6587\u4ef6\uff09<\/li>\n<li>\u901a\u8fc7\u7f51\u7edc\u5c06 RDB \u6587\u4ef6\u53d1\u9001\u7ed9 Replica<\/li>\n<li>\u5728 RDB \u6587\u4ef6\u53d1\u9001\u5b8c\u6bd5\u540e\uff0c\u4f1a\u5c06\u79ef\u7d2f\u7684\u589e\u91cf\u547d\u4ee4\uff08AOF \u6216\u547d\u4ee4\u7f13\u5b58\uff09\u53d1\u9001\u7ed9 Replica<\/li>\n<\/ol>\n<\/li>\n<li>Replica \u5728\u6536\u5230 RDB \u540e\u4f1a\u5148\u5c06\u5176\u52a0\u8f7d\u5230\u5185\u5b58\uff0c\u518d\u5e94\u7528\u540e\u7eed\u589e\u91cf\u547d\u4ee4\uff0c\u76f4\u5230\u4e0e Master \u540c\u6b65\u5230\u76f8\u540c\u7684 offset\uff08\u590d\u5236\u504f\u79fb\u91cf\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u90e8\u5206\u91cd\u540c\u6b65\uff08Partial Resynchronization\uff09<\/strong>\n<ul>\n<li>\u5982\u679c Replica \u4e0e Master \u65ad\u5f00\u8fde\u63a5\uff08\u7f51\u7edc\u6545\u969c\u3001\u8d85\u65f6\u7b49\uff09\u540e\u91cd\u65b0\u8fde\u63a5\uff0cReplica \u4f1a\u628a\u81ea\u5df1\u4fdd\u5b58\u7684 <em>Replication Offset<\/em>\uff08\u590d\u5236\u504f\u79fb\u91cf\uff09\u548c <em>Replication ID<\/em>\uff08\u540c\u6b65 ID\uff09\u53d1\u9001\u7ed9 Master\u3002<\/li>\n<li>\u5982\u679c Master \u8fd8\u80fd\u5728\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\uff08Replication Backlog\uff09\u4e2d\u627e\u5230\u4ece Replica \u4e0a\u6b21\u65ad\u5f00\u540e\u9057\u6f0f\u7684\u90a3\u90e8\u5206\u6570\u636e\uff0c\u5c31\u53ef\u4ee5\u76f4\u63a5\u8fdb\u884c \u201c\u90e8\u5206\u91cd\u540c\u6b65\u201d\uff0c\u53ea\u53d1\u9001\u7f3a\u5931\u7684\u547d\u4ee4\u7ed9 Replica\uff0c\u907f\u514d\u91cd\u590d\u6267\u884c\u4e00\u6b21\u5168\u91cf\u6570\u636e\u540c\u6b65\uff0c\u4ece\u800c\u51cf\u5c11\u7f51\u7edc\u548c IO \u5f00\u9500\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u590d\u5236\u504f\u79fb\u91cf\uff08Replication Offset\uff09\u4e0e\u590d\u5236\u7f13\u51b2\u533a\uff08Replication Backlog\uff09<\/strong>\n<ul>\n<li>Master \u5728\u5904\u7406\u547d\u4ee4\u65f6\uff0c\u4f1a\u7ef4\u62a4\u4e00\u4e2a\u5168\u5c40\u589e\u957f\u7684 <strong>offset<\/strong>\uff0c\u540c\u65f6\u628a\u6700\u8fd1\u4e00\u6bb5\u65f6\u95f4\u7684\u5199\u547d\u4ee4\u7f13\u5b58\u5230 <strong>Backlog<\/strong>\u3002<\/li>\n<li>\u5f53 Replica \u53d1\u8d77 PSYNC \u8bf7\u6c42\u65f6\uff0c\u4f1a\u5e26\u4e0a\u81ea\u5df1\u7684 offset \u548c\u4e0a\u4e00\u6b21\u590d\u5236\u7684 <strong>Master Replid<\/strong>\uff0cMaster \u68c0\u67e5\u662f\u5426\u80fd\u6ee1\u8db3\u90e8\u5206\u91cd\u540c\u6b65\uff0c\u5426\u5219\u53ea\u80fd\u518d\u6b21\u8fdb\u884c\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4e3b\u4ece\u590d\u5236\u7684\u5f02\u6b65\u7279\u6027<\/strong>\n<ul>\n<li>Redis \u590d\u5236\u662f <strong>\u5f02\u6b65<\/strong> \u7684\uff0cMaster \u5728\u5199\u64cd\u4f5c\u5b8c\u6210\u540e\u5c31\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\uff0c\u540e\u53f0\u624d\u5411 Replica \u53d1\u9001\u590d\u5236\u6570\u636e\u3002<\/li>\n<li>\u5982\u679c\u9700\u8981\u4fdd\u969c\u6570\u636e\u5b89\u5168\uff08\u4f8b\u5982\u907f\u514d\u4e3b\u8282\u70b9\u5b95\u673a\u65f6\u6570\u636e\u4e22\u5931\u8fc7\u591a\uff09\uff0c\u9700\u8981\u914d\u5408 <code>min-replicas-to-write<\/code>\u3001<code>min-replicas-max-lag<\/code> \u7b49\u914d\u7f6e\u9879\u6765\u505a\u4e00\u5b9a\u7a0b\u5ea6\u7684\u540c\u6b65\u4fdd\u969c\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>7.3 \u914d\u7f6e\u4e0e\u8fd0\u7ef4\u8981\u70b9<\/h2>\n<h3>7.3.1 \u57fa\u672c\u914d\u7f6e<\/h3>\n<p>\u5728 <code>redis.conf<\/code> \u6216\u8005\u4f7f\u7528 <code>CONFIG SET<\/code> \u547d\u4ee4\uff0c\u53ef\u4ee5\u8fdb\u884c\u4ee5\u4e0b\u914d\u7f6e\u6765\u542f\u7528\u548c\u7ba1\u7406\u590d\u5236\u529f\u80fd\uff1a<\/p>\n<ul>\n<li><strong>Master \u4fa7\u914d\u7f6e<\/strong><\/li>\n<\/ul>\n<p>\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u4e3b\u8282\u70b9\u4e0d\u9700\u8981\u989d\u5916\u505a\u4ec0\u4e48\u7279\u6b8a\u914d\u7f6e\uff0c\u53ea\u8981\u6b63\u5e38\u63d0\u4f9b\u670d\u52a1\u5373\u53ef\u3002<\/p>\n<p>\u5982\u679c\u4f60\u4e3a Master \u8bbe\u7f6e\u4e86\u8bbf\u95ee\u5bc6\u7801\uff08\u4f8b\u5982 <code>requirepass<\/code>\uff09\uff0c\u4f60\u9700\u8981\u5728 Slave \u7aef\u505a\u76f8\u5e94\u7684\u8eab\u4efd\u8ba4\u8bc1\u914d\u7f6e\u3002<\/p>\n<ul>\n<li>\n<p><strong>Slave \u4fa7\u914d\u7f6e<\/strong><\/p>\n<pre><code class=\"language-bash\">replicaof <master-ip> <master-port>\nreplicaof 10.0.0.42 6379<\/code><\/pre>\n<p>\u6216\u5728 Redis \u8fd0\u884c\u4e2d\u6267\u884c\uff1a<\/p>\n<pre><code class=\"language-bash\">REPLICAOF <master-ip> <master-port><\/code><\/pre>\n<\/li>\n<li>\n<p><strong>\u5bc6\u7801\u76f8\u5173<\/strong><\/p>\n<ul>\n<li>\u5982\u679c Master \u8bbe\u7f6e\u4e86\u8bbf\u95ee\u5bc6\u7801\uff0c\u9700\u8981\u5728 Replica \u914d\u7f6e\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">masterauth <master-password>\nmasterauth 123456<\/code><\/pre>\n<ul>\n<li>Replica \u81ea\u8eab\u7684 <code>requirepass<\/code> \u7528\u4e8e\u5ba2\u6237\u7aef\u8bbf\u95ee Replica \u65f6\u7684\u5bc6\u7801\uff0c\u4e0e\u590d\u5236\u7528\u7684 <code>masterauth<\/code> \u5e76\u4e0d\u76f8\u540c\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u53ea\u8bfb\u6a21\u5f0f<\/strong><\/p>\n<ul>\n<li>Redis \u9ed8\u8ba4\u5f00\u542f <code>replica-read-only yes<\/code>\uff0c\u4ece\u8282\u70b9\u53ea\u63a5\u53d7\u8bfb\u8bf7\u6c42\uff0c\u4e0d\u5141\u8bb8\u5916\u90e8\u5199\uff0c\u4ece\u800c\u907f\u514d\u5199\u5165\u51b2\u7a81\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u5ef6\u8fdf\u4f18\u5316<\/strong><\/p>\n<ul>\n<li><code>repl-disable-tcp-nodelay<\/code>\u3001<code>client-output-buffer-limit<\/code> \u4ee5\u53ca\u7f51\u7edc\u76f8\u5173\u53c2\u6570\u53ef\u89c6\u4e1a\u52a1\u573a\u666f\u8fdb\u884c\u8c03\u4f18\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"language-bash\"># \u901a\u8fc7\u547d\u4ee4\u884c\u76f4\u63a5\u8bbe\u7f6e(Redis\u7684\u7248\u672c\u8981\u4fdd\u6301\u4e00\u81f4,\u5982\u679c\u4e0d\u4e00\u81f4\u53ef\u80fd\u4f1a\u65e0\u6cd5\u590d\u5236)\n# \u6240\u6709\u4ece\u8282\u70b9\u6267\u884c\n127.0.0.1:6379&gt; REPLICAOF 10.0.0.42 6379\n127.0.0.1:6379&gt; CONFIG SET masterauth 123456\n# slave1 \u4ece\u8282\u70b9\u72b6\u6001\n127.0.0.1:6379&gt; info replication\n# Replication\nrole:slave\nmaster_host:10.0.0.42\nmaster_port:6379\nmaster_link_status:up\nmaster_last_io_seconds_ago:4\nmaster_sync_in_progress:0\nslave_read_repl_offset:64185\nslave_repl_offset:64185\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:8ba3aa667f0d3e54f4c6499d4d42ce0f68ccce8f\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:64185\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:962\nrepl_backlog_histlen:63224\n127.0.0.1:6379&gt;\n\n# slave2 \u4ece\u8282\u70b9\u72b6\u6001\n127.0.0.1:6379&gt; info replication\n# Replication\nrole:slave\nmaster_host:10.0.0.42\nmaster_port:6379\nmaster_link_status:up\nmaster_last_io_seconds_ago:6\nmaster_sync_in_progress:0\nslave_read_repl_offset:2109\nslave_repl_offset:2109\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:8ba3aa667f0d3e54f4c6499d4d42ce0f68ccce8f  &lt;-- \u4e3b\u8282\u70b9\u7684 replid\nmaster_replid2:0000000000000000000000000000000000000000 &lt;-- \u5907\u7528 replid\nmaster_repl_offset:2109\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:738\nrepl_backlog_histlen:1372\n127.0.0.1:6379&gt;\n\n# \u4e3b\u8282\u70b9\u72b6\u6001\n127.0.0.1:6379&gt; info replication\n# Replication\nrole:master\nconnected_slaves:2\nslave0:ip=10.0.0.40,port=6379,state=online,offset=1045,lag=0\nslave1:ip=10.0.0.41,port=6379,state=online,offset=1045,lag=0\nmaster_failover_state:no-failover\nmaster_replid:8ba3aa667f0d3e54f4c6499d4d42ce0f68ccce8f\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:1045\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:6\nrepl_backlog_histlen:1040\n127.0.0.1:6379&gt;<\/code><\/pre>\n<p><strong>role:slave<\/strong>\uff1a\u672c\u5b9e\u4f8b\u662f\u4ece\u8282\u70b9\u3002<\/p>\n<p><strong>master_link_status:up<\/strong>\uff1a\u5f53\u524d\u548c\u4e3b\u8282\u70b9\u8fde\u63a5\u6b63\u5e38\u3002<\/p>\n<p><strong>master_last_io_seconds_ago:8<\/strong>\uff1a\u4e0a\u4e00\u6b21\u4ece\u4e3b\u8282\u70b9\u6536\u5230\u6570\u636e\u5230\u73b0\u5728\uff0c\u5df2\u7ecf\u8fc7\u4e86 8 \u79d2\u3002<\/p>\n<p><strong>master_sync_in_progress:0<\/strong>\uff1a\u8868\u793a\u76ee\u524d\u6ca1\u6709\u5728\u505a\u5168\u91cf\u590d\u5236\u6216\u540c\u6b65\u8fc7\u7a0b\uff1b\u5982\u679c\u5728\u8fdb\u884c\u5168\u91cf\u540c\u6b65\uff0c\u4f1a\u663e\u793a 1\u3002<\/p>\n<p><strong>slave_read_repl_offset\u3001slave_repl_offset<\/strong>\uff1a\u8be5\u4ece\u8282\u70b9\u5f53\u524d\u5df2\u8bfb\u53d6\/\u6267\u884c\u5230\u7684\u590d\u5236\u504f\u79fb\u91cf\u3002<\/p>\n<p><strong>master_replid<\/strong>\uff1a\u4e3b\u8282\u70b9\u7684\u590d\u5236 ID\u3002<\/p>\n<p><strong>master_replid2<\/strong>\uff1a\u5907\u7528 ID\uff0c\u9ed8\u8ba4\u662f\u5168 0\uff0c\u5982\u679c\u6ca1\u6709\u7ecf\u5386\u6545\u969c\u8f6c\u79fb\u6216\u8005\u6ca1\u6709\u5f00\u542f\u76f8\u5173\u529f\u80fd\uff0c\u901a\u5e38\u4e0d\u4f1a\u88ab\u4f7f\u7528\u3002<\/p>\n<p><strong>master_repl_offset<\/strong>\uff1a\u4e3b\u8282\u70b9\u4e0a\u7684\u5168\u5c40\u590d\u5236\u504f\u79fb\u91cf\u3002<\/p>\n<p>**repl<em>backlog<\/em>***\uff1a\u4e0e\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\u7684\u72b6\u6001\u76f8\u5173\u3002<\/p>\n<p><strong>connected_slaves:0<\/strong>\uff1a\u56e0\u4e3a\u8fd9\u662f\u4e00\u4e2a\u4ece\u8282\u70b9\uff0c\u4e0d\u4f1a\u518d\u5e26\u5176\u4ed6\u4ece\u8282\u70b9\uff0c\u6240\u4ee5\u5176\u4e0b\u7ea7\u4ece\u8282\u70b9\u6570\u91cf\u662f 0\u3002<\/p>\n<h3>7.3.2 \u5b95\u673a\u4e0e\u6545\u969c\u6062\u590d<\/h3>\n<ul>\n<li><strong>\u65ad\u7535 \/ \u5b95\u673a\u540e\u518d\u6b21\u542f\u52a8<\/strong>\n<ul>\n<li>\u5982\u679c Replica \u7684\u504f\u79fb\u91cf\u4fe1\u606f\u4ecd\u7136\u4fdd\u7559\uff0c\u4e14 Master \u7684 backlog \u4e2d\u8fd8\u5305\u542b\u6240\u9700\u7684\u589e\u91cf\u6570\u636e\uff0c\u5219\u4f1a\u89e6\u53d1 <strong>\u90e8\u5206\u91cd\u540c\u6b65<\/strong>\uff1b\u5426\u5219\u8fdb\u884c <strong>\u5168\u91cf\u540c\u6b65<\/strong>\u3002<\/li>\n<li>\u9700\u8981\u91cd\u70b9\u5173\u6ce8\u78c1\u76d8\u5269\u4f59\u7a7a\u95f4\u3001\u5185\u5b58\u5bb9\u91cf\u4ee5\u53ca\u7f51\u7edc\u5e26\u5bbd\uff0c\u907f\u514d\u5728\u9ad8\u5e76\u53d1\u6216\u8d85\u5927 RDB \u4f20\u8f93\u65f6\u7ed9\u7cfb\u7edf\u5e26\u6765\u98ce\u9669\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u76d1\u63a7\u4e0e\u544a\u8b66<\/strong>\n<ul>\n<li>\u5efa\u8bae\u901a\u8fc7<code>INFO replication<\/code>\u76d1\u63a7\u4ee5\u4e0b\u6307\u6807\uff1a<\/li>\n<li><code>role<\/code>\uff1a\u8282\u70b9\u89d2\u8272\uff08master \/ replica\uff09<\/li>\n<li><code>connected_slaves<\/code>\uff1a\u5f53\u524d\u8fde\u63a5\u7684\u4ece\u8282\u70b9\u6570\u91cf<\/li>\n<li><code>repl_backlog_active<\/code>\u3001<code>repl_backlog_size<\/code> \u548c backlog \u7684\u4f7f\u7528\u60c5\u51b5<\/li>\n<li><code>master_link_status<\/code>\uff1a\u4ece\u8282\u70b9\u4e0e\u4e3b\u8282\u70b9\u7684\u8fde\u63a5\u72b6\u6001\uff08up \/ down\uff09<\/li>\n<li><code>master_sync_in_progress<\/code>\uff1a\u4ece\u8282\u70b9\u662f\u5426\u5728\u8fdb\u884c\u540c\u6b65<\/li>\n<li>\u7ed3\u5408\u5176\u4ed6\u76d1\u63a7\u7cfb\u7edf\uff08\u5982 Prometheus + Grafana\uff09\u5c06\u590d\u5236\u72b6\u6001\u53ef\u89c6\u5316\uff0c\u4fbf\u4e8e\u53ca\u65f6\u53d1\u73b0\u95ee\u9898\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u624b\u52a8\u6545\u969c\u8f6c\u79fb<\/strong>\n<ul>\n<li>\u5982\u679c\u4f7f\u7528 Sentinel\uff0c\u53ef\u4ee5\u5728\u4e3b\u8282\u70b9\u6545\u969c\u65f6\u81ea\u52a8\u63d0\u5347\u67d0\u4e2a\u4ece\u8282\u70b9\u4e3a\u65b0\u4e3b\u8282\u70b9\u3002<\/li>\n<li>\u5982\u679c\u6ca1\u6709\u4f7f\u7528 Sentinel \u6216\u96c6\u7fa4\uff0c\u9700\u8981\u624b\u52a8\u6267\u884c <code>REPLICAOF NO ONE<\/code> \u5c06\u67d0\u4e2a\u4ece\u8282\u70b9\u664b\u5347\u4e3a\u4e3b\u8282\u70b9\uff0c\u5e76\u91cd\u65b0\u914d\u7f6e\u5176\u4ed6\u8282\u70b9\u7684\u590d\u5236\u6307\u5411\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>7.3.3 \u6027\u80fd\u8c03\u4f18<\/h3>\n<ul>\n<li><strong>\u51cf\u5c0f\u5168\u91cf\u590d\u5236\u7684\u6982\u7387<\/strong>\n<ul>\n<li>\u9002\u5ea6\u589e\u5927 <code>repl-backlog-size<\/code>\uff0c\u8ba9\u4e3b\u8282\u70b9\u53ef\u4ee5\u4fdd\u5b58\u66f4\u591a\u589e\u91cf\u547d\u4ee4\uff0c\u51cf\u5c11\u91cd\u8fde\u540e\u51fa\u73b0 \u201c\u65e0\u6cd5\u90e8\u5206\u91cd\u540c\u6b65\u201d \u7684\u60c5\u51b5\u3002<\/li>\n<li>\u4f18\u5316\u7f51\u7edc\u72b6\u51b5\uff0c\u7f29\u77ed\u590d\u5236\u5ef6\u8fdf\uff0c\u964d\u4f4e Replica \u5931\u8054\u51e0\u7387\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5408\u7406\u4f7f\u7528\u78c1\u76d8\u590d\u5236\uff08Diskless Replication\uff09<\/strong>\n<ul>\n<li>\u82e5\u78c1\u76d8 IO \u538b\u529b\u8f83\u5927\u6216\u8005\u73af\u5883\u5141\u8bb8\uff0c\u53ef\u4ee5\u6253\u5f00 <code>repl-diskless-sync yes<\/code>\u3002<\/li>\n<li>\u5728\u5927\u89c4\u6a21\u573a\u666f\u4e0b\u9700\u8981\u8bc4\u4f30\u5185\u5b58\u5cf0\u503c\uff0c\u907f\u514d\u4ea7\u751f\u8fc7\u5927\u7684\u5185\u5b58\u6d88\u8017\u5bfc\u81f4 OOM\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u591a\u526f\u672c\u7b56\u7565<\/strong>\n<ul>\n<li>\u5982\u679c\u4e1a\u52a1\u6709\u4e25\u683c\u7684\u6570\u636e\u5b89\u5168\u9700\u6c42\uff0c\u53ef\u4ee5\u591a\u5b9e\u4f8b\u90e8\u7f72\uff0c\u4ece\u8282\u70b9\u6570\u91cf\u589e\u52a0\u540e\uff0c\u901a\u8fc7 <code>min-replicas-to-write<\/code> \u548c <code>min-replicas-max-lag<\/code> \u673a\u5236\u505a\u4e00\u5b9a\u7a0b\u5ea6\u7684 <em>\u201c\u534a\u540c\u6b65\u201d<\/em>\uff08\u5199\u5b89\u5168\uff09\u4fdd\u62a4\u3002<\/li>\n<li>\u4f46\u8981\u6ce8\u610f\u8fc7\u591a Replica \u4e5f\u4f1a\u52a0\u5927\u4e3b\u8282\u70b9\u5e26\u5bbd\u538b\u529b\u548c\u5185\u5b58\u5f00\u9500\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>7.4 \u4e3b\u4ece\u590d\u5236\u6545\u969c\u6062\u590d<\/h2>\n<blockquote>\n<p>\u5982\u4f55\u5728 <strong>Redis<\/strong> \u4e2d\u624b\u52a8\u914d\u7f6e <strong>\u4e3b\u4ece\u590d\u5236\uff08Master-Replica\uff09<\/strong> \u4ee5\u53ca\u5728 <strong>Master<\/strong> \u8282\u70b9\u6545\u969c\u540e\u5982\u4f55\u624b\u52a8\u5c06 <strong>Slave\uff08Replica\uff09<\/strong> \u63d0\u5347\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\u7684\u6574\u4e2a\u8fc7\u7a0b\u3002<\/p>\n<ul>\n<li><strong>\u7eaf\u624b\u52a8<\/strong>\u914d\u7f6e<\/li>\n<li><strong>\u57fa\u4e8e Sentinel<\/strong> \u7684\u81ea\u52a8\/\u534a\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<\/ul>\n<\/blockquote>\n<h3>Master \u8282\u70b9\u6545\u969c &amp; \u624b\u52a8\u63d0\u5347 Slave<\/h3>\n<p>\u5f53 <strong>Master<\/strong> \u8282\u70b9 \u201c\u6302\u4e86\u201d \u6216\u51fa\u73b0\u4e25\u91cd\u6545\u969c\uff0c\u9700\u8981\u5c06 <strong>Slave<\/strong> \u8282\u70b9\u53d8\u6210\u65b0\u7684 Master\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u79f0\u4e3a <strong>\u6545\u969c\u8f6c\u79fb<\/strong> \u6216 <strong>\u4e3b\u4ece\u5207\u6362<\/strong>\u3002<\/p>\n<ol>\n<li><strong>\u786e\u5b9a Master \u5df2\u4e0d\u53ef\u7528<\/strong><\/li>\n<\/ol>\n<ul>\n<li>\u901a\u8fc7\u76d1\u63a7\u3001\u65e5\u5fd7\u6216\u8fd0\u7ef4\u5de5\u5177\u786e\u8ba4 Master \u8282\u70b9\u5b95\u673a\uff0c\u6216\u8005\u65e0\u6cd5\u5728\u77ed\u65f6\u95f4\u5185\u4fee\u590d\u3002<\/li>\n<\/ul>\n<ol start=\"2\">\n<li><strong>\u5728 Slave \u4e0a\u505c\u6b62\u590d\u5236\uff0c\u63d0\u5347\u4e3a\u4e3b<\/strong><\/li>\n<\/ol>\n<ul>\n<li>\u767b\u5f55\u5230 Slave \u8282\u70b9:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis-cli -h 10.0.0.40 -p 6379<\/code><\/pre>\n<ul>\n<li>\u6267\u884c\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">REPLICAOF NO ONE<\/code><\/pre>\n<p>\u6b64\u547d\u4ee4\u4f1a\u8ba9\u5f53\u524d\u8282\u70b9\u653e\u5f03\u505a\u4ece\u8282\u70b9\u7684\u89d2\u8272\uff0c\u6210\u4e3a\u4e00\u4e2a\u201c\u72ec\u7acb\u201d\u7684\u4e3b\u8282\u70b9\uff0c\u4eca\u540e\u5199\u5165\u5c06\u76f4\u63a5\u5728\u8fd9\u4e2a\u8282\u70b9\u751f\u6548\u3002<\/p>\n<ul>\n<li>\uff08\u53ef\u9009\uff09\u5982\u679c\u539f\u672c Master \u8bbe\u7f6e\u4e86\u5bc6\u7801\uff0c\u800c\u5f53\u524d\u8282\u70b9\u4e5f\u9700\u8981\u5bf9\u5ba2\u6237\u7aef\u8fdb\u884c\u8ba4\u8bc1\uff0c\u53ef\u5728 <code>redis.conf<\/code> \u4e2d\u8bbe\u7f6e <code>requirepass new-password<\/code>\uff0c\u6216\u8005\u7528 <code>CONFIG SET requirepass new-password<\/code>\u3002<\/li>\n<\/ul>\n<ol start=\"3\">\n<li><strong>\u68c0\u67e5\u65b0\u7684 Master \u72b6\u6001<\/strong><\/li>\n<\/ol>\n<ul>\n<li>\u518d\u6b21\u6267\u884c <code>INFO replication<\/code>\uff0c\u5e94\u5f53\u770b\u5230 <code>role: master<\/code>\uff0c\u4e14 <code>connected_slaves: 0<\/code>\u3002<\/li>\n<li>\u6d4b\u8bd5\u5199\u5165\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">SET new_test_key &quot;i_am_new_master&quot;\nGET new_test_key<\/code><\/pre>\n<p>\u5982\u679c\u8fd4\u56de\u6b63\u786e\uff0c\u8bf4\u660e\u65b0\u7684 Master \u5de5\u4f5c\u6b63\u5e38<\/p>\n<ol start=\"4\">\n<li><strong>\u5176\u4ed6\u8282\u70b9\uff08\u5982\u679c\u6709\u591a\u4e2a\uff09\u91cd\u65b0\u6307\u5411\u65b0\u7684 Master<\/strong><\/li>\n<\/ol>\n<ul>\n<li>\u5982\u679c\u539f\u6765\u8fd8\u6709\u5176\u4ed6\u4ece\u8282\u70b9\uff0c\u9700\u8981\u5c06\u5b83\u4eec\u4e5f\u5207\u6362\u5230\u6307\u5411\u65b0\u7684 Master\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis-cli -h &lt;other-slave-ip&gt; -p 6379 REPLICAOF 10.0.0.40 6379<\/code><\/pre>\n<ul>\n<li>\u5982\u679c\u4e4b\u524d\u6ca1\u6709\u8bbe\u7f6e Sentinel \u6216\u81ea\u52a8\u5316\u811a\u672c\uff0c\u9700\u8981\u4e00\u53f0\u53f0\u624b\u52a8\u6267\u884c\u3002<\/li>\n<\/ul>\n<h3>\u4f7f\u7528 Sentinel \u81ea\u52a8\u5316\u6216\u534a\u81ea\u52a8\u5316\u6545\u969c\u8f6c\u79fb<\/h3>\n<p>\u5982\u679c\u4f60\u89c9\u5f97 <strong>\u7eaf\u624b\u52a8<\/strong> \u7684\u65b9\u5f0f\u5728\u751f\u4ea7\u73af\u5883\u4e0d\u591f\u53ca\u65f6\u6216\u5b58\u5728\u4eba\u5de5\u5931\u8bef\u7684\u98ce\u9669\uff0cRedis \u63d0\u4f9b\u4e86 <strong>Sentinel<\/strong> \u7ec4\u4ef6\uff0c\u80fd\u591f\u5b9e\u73b0\u81ea\u52a8\u6216\u534a\u81ea\u52a8\u7684\u6545\u969c\u68c0\u6d4b\u4e0e\u4e3b\u4ece\u5207\u6362\u3002<\/p>\n<h4>1. Sentinel \u7684\u5de5\u4f5c\u539f\u7406\u7b80\u8ff0<\/h4>\n<ul>\n<li><strong>Sentinel<\/strong> \u8fdb\u7a0b\u4f1a\u4e0d\u65ad\u5730\u76d1\u63a7\u4e3b\u670d\u52a1\u5668\u548c\u4ece\u670d\u52a1\u5668\u7684\u5065\u5eb7\u72b6\u6001\u3002<\/li>\n<li>\u5f53 Sentinel \u8ba4\u4e3a\u4e3b\u670d\u52a1\u5668\u5904\u4e8e\u5b95\u673a\u72b6\u6001\uff08\u7ecf\u8fc7\u82e5\u5e72\u6b21\u5224\u65ad\u786e\u8ba4\uff09\uff0c\u5b83\u4f1a\u5728\u5269\u4f59\u7684 Sentinel \u8fdb\u7a0b\u95f4\u901a\u8fc7\u6295\u7968\u786e\u5b9a\u662f\u5426\u771f\u7684\u6545\u969c\u3002<\/li>\n<li>\u4e00\u65e6\u786e\u8ba4 Master \u6545\u969c\uff0cSentinel \u4f1a\u5c06\u67d0\u4e00\u53f0 Slave\uff08Replica\uff09\u63d0\u5347\u4e3a\u65b0\u7684 Master\uff0c\u5e76\u5411\u5176\u4ed6\u4ece\u8282\u70b9\u53d1\u5e03\u66f4\u65b0\uff0c\u6307\u5411\u65b0\u7684 Master\u3002<\/li>\n<li>\u5ba2\u6237\u7aef\u53ef\u4ee5\u901a\u8fc7 Sentinel \u83b7\u53d6\u6700\u65b0\u7684 Master \u4fe1\u606f\uff0c\u4ece\u800c\u59cb\u7ec8\u5411\u6b63\u786e\u7684\u4e3b\u8282\u70b9\u53d1\u9001\u5199\u8bf7\u6c42\u3002<\/li>\n<\/ul>\n<h4>2. Sentinel \u914d\u7f6e\u793a\u4f8b<\/h4>\n<p>\u5047\u8bbe\u6709\u4e09\u53f0\u673a\u5668\u90e8\u7f72\u4e86\u4e09\u4e2a Sentinel \u5b9e\u4f8b\uff08\u4e00\u822c\u751f\u4ea7\u73af\u5883\u8981\u6709\u5947\u6570\u4e2a Sentinel\uff0c\u81f3\u5c11 3 \u4e2a\uff09\u3002\u8fd9\u91cc\u7b80\u5355\u793a\u8303\u4e00\u4e2a Sentinel \u7684\u914d\u7f6e\u6587\u4ef6\uff08<code>sentinel.conf<\/code>\uff09\u6838\u5fc3\u7247\u6bb5\uff1a<\/p>\n<pre><code class=\"language-bash\">port 26379\n\n# \u76d1\u63a7\u6307\u5b9aMaster\uff1a&lt;MasterName&gt; &lt;ip&gt; &lt;port&gt; &lt;quorum&gt;\n# quorum \u662f\u5224\u65ad\u5b95\u673a\u6240\u9700\u8981\u7684\u6700\u5c11 Sentinel \u540c\u610f\u7968\u6570\nsentinel monitor mymaster 192.168.1.10 6379 2\n\n# \u5982\u679c Master \u8bbe\u7f6e\u4e86\u5bc6\u7801\uff0c\u8bf7\u4f7f\u7528\uff1a\nsentinel auth-pass mymaster &lt;master-password&gt;\n\n# \u6545\u969c\u8f6c\u79fb\u65f6\u65b0 Master \u7684\u590d\u5236\u914d\u7f6e\nsentinel config-epoch mymaster 0\n\n# \u5f00\u542f\u901a\u77e5\u811a\u672c\uff08\u53ef\u9009\uff09\uff0c\u5f53\u6545\u969c\u8f6c\u79fb\u65f6\u6267\u884c\u67d0\u4e9b\u901a\u77e5\u52a8\u4f5c\n# sentinel notification-script mymaster \/var\/redis\/scripts\/notify.sh\n\n# \u6545\u969c\u8f6c\u79fb\u540e\u6267\u884c\u7684\u811a\u672c\uff08\u53ef\u9009\uff09\uff0c\u6bd4\u5982\u66f4\u6539\u5e94\u7528\u914d\u7f6e\n# sentinel reconfig-script mymaster \/var\/redis\/scripts\/reconfig.sh\n\n# \u6307\u5b9a\u68c0\u6d4b Master\u3001Slave\u3001Sentinel \u7684\u5468\u671f\u3001\u8d85\u65f6\u65f6\u95f4\u7b49\nsentinel down-after-milliseconds mymaster 5000\nsentinel failover-timeout mymaster 60000\n<\/code><\/pre>\n<ul>\n<li>\u542f\u52a8 Sentinel\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis-sentinel \/path\/to\/sentinel.conf<\/code><\/pre>\n<ul>\n<li>\n<p>\u901a\u8fc7 <code>redis-cli -p 26379 SENTINEL masters<\/code>\u3001<code>SENTINEL slaves mymaster<\/code> \u53ef\u4ee5\u67e5\u770b\u5f53\u524d Sentinel \u76d1\u63a7\u5230\u7684\u4e3b\u4ece\u4fe1\u606f\u3002<\/p>\n<\/li>\n<li>\n<p>\u4e00\u65e6\u4e3b\u8282\u70b9\u6545\u969c\uff0cSentinel \u4f1a\u7ecf\u8fc7\u5224\u5b9a\u548c\u6295\u7968\uff0c\u5c06\u4e00\u4e2a Slave \u81ea\u52a8\u63d0\u5347\u4e3a Master \u5e76\u66f4\u65b0\u96c6\u7fa4\u62d3\u6251<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u63d0\u793a<\/strong>\uff1a\u5982\u679c\u5e0c\u671b\u5728\u6545\u969c\u65f6\u4eba\u5de5\u786e\u8ba4\u540e\u518d\u5207\u6362\uff0c\u4e5f\u53ef\u4ee5\u7ed3\u5408\u811a\u672c\uff0c\u8ba9 Sentinel \u5148\u53d1\u51fa\u901a\u77e5\uff0c\u8fd0\u7ef4\u624b\u52a8\u6267\u884c <code>SENTINEL failover mymaster<\/code> \u547d\u4ee4\u89e6\u53d1\u6545\u969c\u8f6c\u79fb\uff0c\u8fd9\u5c31\u53d8\u6210\u4e86\u201c\u534a\u81ea\u52a8\u5316\u201d\u65b9\u6848\u3002<\/p>\n<\/blockquote>\n<p>\u5728 Redis \u7684\u4e3b\u4ece\u590d\u5236\u673a\u5236\u4e2d\uff0c\u4e3b\u8981\u5b58\u5728\u4e24\u79cd\u6570\u636e\u540c\u6b65\u65b9\u5f0f\uff1a<strong>\u5168\u91cf\u590d\u5236\uff08Full Resynchronization\uff09\\<\/strong>\u548c**\u589e\u91cf\u590d\u5236\uff08Partial Resynchronization\uff09**\u3002\u4e0b\u9762\u4ece\u539f\u7406\u548c\u6d41\u7a0b\u4e24\u65b9\u9762\u8fdb\u884c\u4ecb\u7ecd\u3002<\/p>\n<hr \/>\n<h2>7.5 \u5168\u91cf\u590d\u5236\uff08Full Resynchronization\uff09<\/h2>\n<p>\u5f53\u4ece\u8282\u70b9\uff08Slave\uff09\u7b2c\u4e00\u6b21\u8fde\u63a5\u5230\u4e3b\u8282\u70b9\uff08Master\uff09\uff0c\u6216\u8005\u56e0\u7f51\u7edc\u6296\u52a8\u3001\u65ad\u7ebf\u5bfc\u81f4\u4e3b\u4ece\u590d\u5236\u72b6\u6001\u4e0d\u4e00\u81f4\u4e14\u65e0\u6cd5\u901a\u8fc7\u589e\u91cf\u590d\u5236\u6765\u8ffd\u8d76\u65f6\uff0c\u5c31\u9700\u8981\u6267\u884c\u5168\u91cf\u590d\u5236\u3002<\/p>\n<h3>1. \u89e6\u53d1\u6761\u4ef6<\/h3>\n<ol>\n<li><strong>\u4ece\u8282\u70b9\u9996\u6b21\u8fde\u63a5\u4e3b\u8282\u70b9<\/strong>\uff1a\u65b0\u7684\u4ece\u8282\u70b9\u521a\u521a\u542f\u52a8\u6216\u6ca1\u6709\u590d\u5236\u72b6\u6001\uff0c\u9700\u8981\u83b7\u53d6\u4e3b\u8282\u70b9\u7684\u5168\u90e8\u6570\u636e\u3002<\/li>\n<li><strong>\u65ad\u7ebf\u540e backlog \u4e0d\u8db3<\/strong>\uff1a\u5982\u679c\u4ece\u8282\u70b9\u65ad\u7ebf\u65f6\u95f4\u8f83\u4e45\uff0c\u4e3b\u8282\u70b9\u7684\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\uff08replication backlog\uff09\u5df2\u7ecf\u8986\u76d6\u4e86\u6240\u9700\u7684\u6570\u636e\u589e\u91cf\uff0c\u65e0\u6cd5\u5b8c\u6210\u589e\u91cf\u590d\u5236\uff0c\u5c31\u4f1a\u89e6\u53d1\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ol>\n<h3>2. \u6d41\u7a0b\u6982\u8ff0<\/h3>\n<ol>\n<li><strong>\u4ece\u8282\u70b9\u5411\u4e3b\u8282\u70b9\u53d1\u9001 <code>PSYNC<\/code> \u547d\u4ee4<\/strong>\n<ul>\n<li>\u5f53\u4ece\u8282\u70b9\u7b2c\u4e00\u6b21\u8fde\u63a5\u4e3b\u8282\u70b9\u6216\u8005\u590d\u5236\u4fe1\u606f\u4e0d\u4e00\u81f4\u65f6\uff0c\u4f1a\u53d1\u9001\u5f62\u5982 <code>PSYNC ? -1<\/code> \u7684\u547d\u4ee4\uff0c\u8868\u793a\u9700\u8981\u8fdb\u884c\u5168\u91cf\u590d\u5236\u3002<\/li>\n<li>\u5982\u679c\u4e3b\u8282\u70b9\u53d1\u73b0\u8fd9\u662f\u4e00\u4e2a\u65e0\u6cd5\u8fdb\u884c\u90e8\u5206\u590d\u5236\u7684\u8bf7\u6c42\uff08\u8981\u4e48\u662f\u7b2c\u4e00\u6b21\u8fde\u63a5\uff0c\u8981\u4e48 backlog \u4e2d\u65e0\u5bf9\u5e94 offset\uff09\uff0c\u5219\u8fd4\u56de <code>FULLRESYNC &lt;runid&gt; &lt;offset&gt;<\/code>\uff0c\u8868\u793a\u5c06\u8fdb\u5165\u5168\u91cf\u590d\u5236\u8fc7\u7a0b\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4e3b\u8282\u70b9\u6267\u884c\u5feb\u7167\uff08RDB\uff09\u5e76\u53d1\u9001\u7ed9\u4ece\u8282\u70b9<\/strong>\n<ul>\n<li>\u4e3b\u8282\u70b9\u63a5\u6536\u5230\u4ece\u8282\u70b9\u7684\u5168\u91cf\u590d\u5236\u8bf7\u6c42\u540e\uff0c\u4f1a <code>fork()<\/code> \u51fa\u4e00\u4e2a\u5b50\u8fdb\u7a0b\u6267\u884c <code>BGSAVE<\/code>\uff0c\u751f\u6210\u4e00\u4efd RDB \u5feb\u7167\u6587\u4ef6\u3002<\/li>\n<li>\u5728\u751f\u6210 RDB \u7684\u8fc7\u7a0b\u4e2d\uff0c\u4e3b\u8282\u70b9\u4f1a\u5c06\u65b0\u5199\u5165\u64cd\u4f5c\uff08\u589e\u91cf\u6570\u636e\uff09\u653e\u5165\u4e00\u4e2a\u7f13\u51b2\u533a\uff08\u590d\u5236\u7f13\u51b2 buffer\uff09\u4e2d\u3002<\/li>\n<li>RDB \u6587\u4ef6\u51c6\u5907\u597d\u540e\uff0c\u4e3b\u8282\u70b9\u4f1a\u901a\u8fc7\u5957\u63a5\u5b57\u628a RDB \u6587\u4ef6\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4ece\u8282\u70b9\u52a0\u8f7d RDB<\/strong>\n<ul>\n<li>\u4ece\u8282\u70b9\u63a5\u6536\u5230 RDB \u6587\u4ef6\u540e\uff0c\u4f1a\u5148\u6e05\u7a7a\u73b0\u6709\u6570\u636e\uff0c\u518d\u5c06 RDB \u6587\u4ef6\u4e2d\u7684\u6570\u636e\u52a0\u8f7d\u5230\u5185\u5b58\uff0c\u5b8c\u6210\u6570\u636e\u7684\u201c\u5feb\u7167\u6062\u590d\u201d\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4f20\u8f93\u589e\u91cf\u6307\u4ee4<\/strong>\n<ul>\n<li>\u5f53\u4ece\u8282\u70b9\u5b8c\u6210 RDB \u52a0\u8f7d\u540e\uff0c\u4e3b\u8282\u70b9\u4f1a\u5c06\u5168\u91cf\u590d\u5236\u671f\u95f4\u7f13\u51b2\u7684\u5199\u64cd\u4f5c\uff08AOF \u540c\u6b65\u6d41\u6216\u590d\u5236\u7f13\u51b2\u533a\uff09\u4e00\u5e76\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\uff0c\u4ece\u8282\u70b9\u4f1a\u4f9d\u6b21\u6267\u884c\u8fd9\u4e9b\u547d\u4ee4\uff0c\u4ee5\u4f7f\u6570\u636e\u6700\u7ec8\u4e0e\u4e3b\u8282\u70b9\u4fdd\u6301\u540c\u6b65\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5207\u6362\u5230\u547d\u4ee4\u6301\u7eed\u590d\u5236<\/strong>\n<ul>\n<li>\u5168\u91cf\u590d\u5236\u5b8c\u6210\u540e\uff0c\u4ece\u8282\u70b9\u4f1a\u6b63\u5f0f\u8fdb\u5165\u4e3b\u4ece\u590d\u5236\u72b6\u6001\uff0c\u6b64\u540e\u4e3b\u8282\u70b9\u4f1a\u5c06\u540e\u7eed\u7684\u5199\u547d\u4ee4\u4ee5\u201c\u547d\u4ee4\u6d41\u201d\u7684\u5f62\u5f0f\u6301\u7eed\u53d1\u7ed9\u4ece\u8282\u70b9\uff0c\u4ece\u8282\u70b9\u5b9e\u65f6\u6267\u884c\uff0c\u5b9e\u73b0\u6700\u7ec8\u4e00\u81f4\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>7.6 \u589e\u91cf\u590d\u5236\uff08Partial Resynchronization\uff09<\/h2>\n<p>\u589e\u91cf\u590d\u5236\u4e5f\u79f0\u4e3a<strong>\u90e8\u5206\u91cd\u540c\u6b65<\/strong>\uff0c\u5f53\u4ece\u8282\u70b9\u4e0e\u4e3b\u8282\u70b9\u4e4b\u95f4\u51fa\u73b0\u77ed\u6682\u65ad\u7ebf\u6216\u4ece\u8282\u70b9\u672c\u8eab\u4fdd\u6301\u4e86\u201c\u590d\u5236\u504f\u79fb\u91cf\u201d\u5e76\u4e14\u4e3b\u8282\u70b9\u4fdd\u5b58\u4e86\u8db3\u591f\u7684\u201c\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\u201d\uff08replication backlog\uff09\u65f6\uff0c\u5c31\u80fd\u901a\u8fc7\u589e\u91cf\u590d\u5236\u5feb\u901f\u201c\u8ffd\u4e0a\u201d\u4e3b\u8282\u70b9\u7684\u5199\u64cd\u4f5c\u3002<\/p>\n<h3>1. \u57fa\u672c\u6982\u5ff5<\/h3>\n<ul>\n<li><strong>runid<\/strong>\uff1a\u6bcf\u4e2a Redis \u5b9e\u4f8b\u90fd\u6709\u4e00\u4e2a\u552f\u4e00\u8fd0\u884c ID\uff0c\u7528\u4e8e\u5728\u4ece\u8282\u70b9\u8ffd\u8e2a\u4e3b\u8282\u70b9\u8eab\u4efd\u65f6\u8bc6\u522b\u4e3b\u8282\u70b9\u3002<\/li>\n<li><strong>\u590d\u5236\u504f\u79fb\u91cf\uff08offset\uff09<\/strong>\uff1a\u4e3b\u8282\u70b9\u7ed9\u81ea\u5df1\u7684\u6bcf\u6761\u5199\u547d\u4ee4\u5206\u914d\u4e00\u4e2a\u9012\u589e\u7684 offset\uff0c\u4ece\u8282\u70b9\u901a\u8fc7\u4e0a\u62a5\u81ea\u8eab\u5df2\u590d\u5236\u7684 offset \u6765\u786e\u5b9a\u9700\u8981\u8865\u9f50\u7684\u6570\u636e\u91cf\u3002<\/li>\n<li><strong>\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\uff08replication backlog\uff09<\/strong>\uff1a\u4e3b\u8282\u70b9\u4e2d\u7528\u73af\u5f62\u7f13\u51b2\u533a\u5b58\u50a8\u6700\u8fd1\u4e00\u6bb5\u65f6\u95f4\u7684\u5199\u64cd\u4f5c\uff08\u547d\u4ee4\u6d41\uff09\uff0c\u4ee5\u4fbf\u65ad\u7ebf\u7684\u4ece\u8282\u70b9\u5728\u6062\u590d\u8fde\u63a5\u540e\uff0c\u53ef\u4ee5\u4ece backlog \u8865\u9f50\u8fd9\u6bb5\u671f\u95f4\u5185\u7f3a\u5931\u7684\u6307\u4ee4\uff0c\u800c\u65e0\u9700\u6267\u884c\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ul>\n<h3>2. \u6d41\u7a0b\u6982\u8ff0<\/h3>\n<ol>\n<li><strong>\u4ece\u8282\u70b9\u5411\u4e3b\u8282\u70b9\u53d1\u9001 <code>PSYNC &lt;master_runid&gt; &lt;offset&gt;<\/code><\/strong>\n<ul>\n<li>\u4ece\u8282\u70b9\u5728\u65ad\u7ebf\u91cd\u8fde\u540e\uff0c\u4f1a\u643a\u5e26\u4e0a\u4e00\u6b21\u8bb0\u5f55\u7684\u4e3b\u8282\u70b9 runid \u548c\u590d\u5236 offset\uff0c\u5411\u4e3b\u8282\u70b9\u8bf7\u6c42\u8fdb\u884c\u90e8\u5206\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4e3b\u8282\u70b9\u68c0\u67e5\u590d\u5236 backlog<\/strong>\n<ul>\n<li>\u4e3b\u8282\u70b9\u5bf9\u6bd4\u4ece\u8282\u70b9\u53d1\u6765\u7684 offset \u4e0e\u81ea\u8eab\u7ef4\u62a4\u7684 backlog\uff1a\n<ol>\n<li>\u5982\u679c offset \u5728 backlog \u7684\u53ef\u7528\u8303\u56f4\u5185\uff08\u5373\u4e3b\u8282\u70b9\u4ecd\u7136\u4fdd\u7559\u4e86\u8fd9\u90e8\u5206\u5199\u547d\u4ee4\uff09\uff0c\u5219\u53ef\u4ee5\u8fdb\u884c\u90e8\u5206\u590d\u5236\u3002<\/li>\n<li>\u5982\u679c offset \u4e0d\u5728 backlog \u8303\u56f4\u5185\uff08\u4e22\u5931\u4e86\u66f4\u591a\u6570\u636e\u6216\u4e3b\u8282\u70b9 runid \u53d1\u751f\u53d8\u5316\uff09\uff0c\u5219\u9700\u8981\u8f6c\u4e3a\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6267\u884c\u589e\u91cf\u590d\u5236<\/strong>\n<ul>\n<li>\u5982\u679c\u7b26\u5408\u6761\u4ef6\uff0c\u4e3b\u8282\u70b9\u4f1a\u4ece backlog \u4e2d\u53d6\u51fa\u4ece\u8282\u70b9\u6240\u7f3a\u5931\u7684\u5199\u547d\u4ee4\uff0c\u4f9d\u6b21\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\u3002<\/li>\n<li>\u4ece\u8282\u70b9\u4f9d\u6b21\u6267\u884c\u8fd9\u4e9b\u6307\u4ee4\uff0c\u5b8c\u6210\u6570\u636e\u8ffd\u8d76\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6301\u7eed\u590d\u5236<\/strong>\n<ul>\n<li>\u5f53 backlog \u7684\u6570\u636e\u8865\u9f50\u540e\uff0c\u4ece\u8282\u70b9\u5c31\u548c\u4e3b\u8282\u70b9\u91cd\u65b0\u4fdd\u6301\u4e00\u81f4\uff0c\u8fdb\u5165\u6b63\u5e38\u7684\u547d\u4ee4\u6d41\u590d\u5236\u9636\u6bb5\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h3>3. \u5168\u91cf\u590d\u5236\u4e0e\u589e\u91cf\u590d\u5236\u7684\u8054\u7cfb<\/h3>\n<ul>\n<li>\u5168\u91cf\u590d\u5236\u662f\u4e00\u4e2a\u201c\u91cd\u7f6e\u6027\u201d\u7684\u8fc7\u7a0b\uff0c\u901a\u5e38\u4f1a\u5e26\u6765\u8f83\u5927\u5f00\u9500\uff1a\n<ul>\n<li>\u4e3b\u8282\u70b9\u9700\u8981\u751f\u6210 RDB \u6587\u4ef6\uff1b<\/li>\n<li>\u4f20\u8f93\u5927\u91cf\u6570\u636e\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u9700\u8981\u6e05\u7a7a\u5185\u5b58\u91cd\u65b0\u52a0\u8f7d RDB\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u589e\u91cf\u590d\u5236\u5219\u66f4\u8f7b\u91cf\uff1a\n<ul>\n<li>\u53ea\u8981\u590d\u5236\u504f\u79fb\u91cf\u8fd8\u5728\u4e3b\u8282\u70b9\u7684 backlog \u8303\u56f4\u5185\uff0c\u4ece\u8282\u70b9\u53ea\u9700\u63a5\u6536\u5e76\u6267\u884c\u7f3a\u5931\u7684\u6307\u4ee4\u5373\u53ef\uff0c\u65e0\u9700\u52a0\u8f7d\u5168\u90e8\u6570\u636e\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Redis \u4f1a\u5c3d\u91cf\u901a\u8fc7\u589e\u91cf\u590d\u5236\u6765\u8282\u7701\u8d44\u6e90\uff0c\u53ea\u6709\u5f53\u589e\u91cf\u590d\u5236\u65e0\u6cd5\u6ee1\u8db3\u9700\u6c42\u65f6\u624d\u4f1a\u964d\u7ea7\u4e3a\u5168\u91cf\u590d\u5236\u3002<\/p>\n<hr \/>\n<h3>4. \u603b\u7ed3<\/h3>\n<ol>\n<li><strong>\u5168\u91cf\u590d\u5236<\/strong>\n<ul>\n<li>\u9002\u7528\u4e8e\u4ece\u8282\u70b9\u521d\u6b21\u8fde\u63a5\u4e3b\u8282\u70b9\u3001\u4ece\u8282\u70b9\u65ad\u7ebf\u8fc7\u4e45\u5bfc\u81f4 backlog \u8986\u76d6\u6216\u4e3b\u8282\u70b9\u91cd\u542f\u5bfc\u81f4 runid \u53d8\u5316\u7684\u60c5\u5f62\u3002<\/li>\n<li>\u6d41\u7a0b\u662f\uff1a\u4ece\u8282\u70b9\u8bf7\u6c42 \u2192\u4e3b\u8282\u70b9\u751f\u6210 RDB \u5e76\u53d1\u9001 \u2192 \u4ece\u8282\u70b9\u52a0\u8f7d RDB \u2192\u540c\u6b65\u589e\u91cf\u6570\u636e\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u589e\u91cf\u590d\u5236<\/strong>\n<ul>\n<li>\u4ece\u8282\u70b9\u5728\u4e0e\u4e3b\u8282\u70b9\u77ed\u6682\u65ad\u7ebf\u4e14 backlog \u5c1a\u5728\u6709\u6548\u8303\u56f4\u65f6\u4f7f\u7528\u3002<\/li>\n<li>\u6d41\u7a0b\u662f\uff1a\u4ece\u8282\u70b9\u643a\u5e26 offset \u8bf7\u6c42 \u2192\u4e3b\u8282\u70b9\u5bf9\u6bd4 offset \u4e0e backlog \u2192 \u5982\u679c\u5728\u6709\u6548\u8303\u56f4\u5219\u53ea\u53d1\u9001\u7f3a\u5931\u547d\u4ee4\u6d41\u5e76\u6267\u884c\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u5728\u5b9e\u9645\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u901a\u8fc7\u5408\u7406\u8bbe\u7f6e <code>repl-backlog-size<\/code> \u548c\u5176\u4ed6\u76f8\u5173\u914d\u7f6e\uff0c\u53ef\u4ee5\u6700\u5927\u9650\u5ea6\u5730\u4f7f\u7528\u589e\u91cf\u590d\u5236\uff0c\u4ece\u800c\u964d\u4f4e\u5168\u91cf\u590d\u5236\u5e26\u6765\u7684\u5f00\u9500\u548c\u5bf9\u96c6\u7fa4\u6027\u80fd\u7684\u5f71\u54cd\u3002<\/p>\n<p>\u4ee5\u4e0b\u5185\u5bb9\u57fa\u4e8e Redis \u7ecf\u5178\uff08\u5355\u673a\u7248\uff09\u4e3b\u4ece\u7ed3\u6784\uff08\u975e Cluster \u6a21\u5f0f\uff09\u8fdb\u884c\u8bb2\u89e3\uff0c\u6db5\u76d6\u4e86 Redis <strong>\u4e3b\u4ece\u540c\u6b65<\/strong>\u7684\u5b8c\u6574\u8fc7\u7a0b\uff0c\u5305\u62ec\u521d\u6b21\u8fde\u63a5\u3001\u5168\u91cf\u590d\u5236\u3001\u589e\u91cf\u590d\u5236\u3001\u65e5\u5e38\u540c\u6b65\u56db\u4e2a\u9636\u6bb5\u3002\u5e0c\u671b\u80fd\u5e2e\u52a9\u4f60\u66f4\u7cfb\u7edf\u5730\u7406\u89e3 Redis \u7684\u4e3b\u4ece\u540c\u6b65\u673a\u5236\u3002<\/p>\n<hr \/>\n<h2>7.7 \u4e3b\u4ece\u540c\u6b65\u5b8c\u6574\u8fc7\u7a0b<\/h2>\n<h3>1. \u4e3b\u4ece\u590d\u5236\u7684\u57fa\u672c\u539f\u7406<\/h3>\n<p>Redis \u4e3b\u4ece\u7ed3\u6784\u4e2d\uff0c<strong>\u4e3b\u8282\u70b9\uff08Master\uff09<\/strong> \u8d1f\u8d23\u5904\u7406\u5199\u64cd\u4f5c\uff0c\u5e76\u5c06\u6570\u636e\u53d8\u5316\uff08\u547d\u4ee4\u6d41\uff09\u4f20\u64ad\u7ed9 <strong>\u4ece\u8282\u70b9\uff08Slave\uff09<\/strong>\u3002<\/p>\n<ul>\n<li><strong>\u4e3b\u8282\u70b9<\/strong>\uff1a\u53ea\u8bfb\/\u8bfb\u5199\u7686\u53ef\uff08\u89c6\u5177\u4f53\u914d\u7f6e\u800c\u5b9a\uff09\uff0c\u4f46\u901a\u5e38\u5728\u751f\u4ea7\u73af\u5883\u4e0b\u53ea\u5bf9\u5916\u63d0\u4f9b\u5199\u64cd\u4f5c\uff1b<\/li>\n<li><strong>\u4ece\u8282\u70b9<\/strong>\uff1a\u53ea\u8bfb\uff0c\u907f\u514d\u5199\u4e0e\u4e3b\u8282\u70b9\u5199\u51b2\u7a81\uff1b\u4ece\u8282\u70b9\u7684\u4f5c\u7528\u901a\u5e38\u662f\u5206\u62c5\u8bfb\u538b\u529b\u6216\u5728\u4e3b\u8282\u70b9\u51fa\u73b0\u6545\u969c\u65f6\u5feb\u901f\u63a5\u7ba1\u3002<\/li>\n<\/ul>\n<p>Redis \u7684\u590d\u5236\u4e3b\u8981\u901a\u8fc7\u4ee5\u4e0b\u5173\u952e\u8981\u7d20\u6765\u7ef4\u6301\u540c\u6b65\uff1a<\/p>\n<ol>\n<li><strong>\u590d\u5236\u504f\u79fb\u91cf\uff08offset\uff09<\/strong>\n<ul>\n<li>\u4e3b\u8282\u70b9\u4f1a\u4e3a\u81ea\u5df1\u53d1\u9001\u7684\u6bcf\u4e00\u6761\u6570\u636e\uff08\u5199\u547d\u4ee4\uff09\u7ef4\u62a4\u4e00\u4e2a\u5168\u5c40\u9012\u589e\u7684 offset\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u4e5f\u4f1a\u7ef4\u62a4\u81ea\u8eab\u5df2\u7ecf\u590d\u5236\u5230\u7684 offset\uff1b<\/li>\n<li>\u53cc\u65b9\u901a\u8fc7\u5bf9\u6bd4 offset \u6765\u786e\u5b9a\u662f\u5426\u6709\u6570\u636e\u7f3a\u5931\u3001\u662f\u5426\u9700\u8981\u8865\u9f50\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8fd0\u884c ID\uff08runid\uff09<\/strong>\n<ul>\n<li>\u6bcf\u4e2a Redis \u8fdb\u7a0b\u5728\u542f\u52a8\u65f6\u90fd\u4f1a\u751f\u6210\u4e00\u4e2a\u552f\u4e00\u6807\u8bc6 runid\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u4f1a\u8bb0\u5f55\u548c\u8bc6\u522b\u5f53\u524d\u6240\u8fde\u4e3b\u8282\u70b9\u7684 runid\uff0c\u7528\u4ee5\u533a\u5206\u4e0d\u540c\u7684\u4e3b\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\uff08replication backlog\uff09<\/strong>\n<ul>\n<li>\u5728\u4e3b\u8282\u70b9\u4e0a\u7ef4\u62a4\u7684\u4e00\u4e2a\u73af\u5f62\u7f13\u51b2\u533a\uff0c\u7528\u4e8e\u7f13\u5b58\u6700\u8fd1\u4e00\u6bb5\u65f6\u95f4\u7684\u5199\u64cd\u4f5c\uff08\u547d\u4ee4\u6d41\uff09\uff1b<\/li>\n<li>\u5f53\u4ece\u8282\u70b9\u77ed\u6682\u65ad\u7ebf\u540e\u91cd\u8fde\uff0c\u5982\u679c\u7f3a\u5931\u7684\u90e8\u5206\u6570\u636e\u4ecd\u5728\u8be5\u7f13\u51b2\u533a\u5185\uff0c\u5c31\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7\u6b64\u7f13\u51b2\u533a\u8865\u9f50\uff0c\u514d\u53bb\u5168\u91cf\u590d\u5236\u5e26\u6765\u7684\u5f00\u9500\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h3>2. \u4ece\u8282\u70b9\u542f\u52a8\u65f6\u7684\u4e3b\u4ece\u540c\u6b65\u6d41\u7a0b<\/h3>\n<p>\u5f53\u4e00\u4e2a\u65b0\u7684\u4ece\u8282\u70b9\u542f\u52a8\uff0c\u6216\u4e00\u4e2a\u65ad\u7ebf\u5df2\u4e45\u7684\u4ece\u8282\u70b9\u91cd\u65b0\u52a0\u5165\u65f6\uff0c\u901a\u5e38\u4f1a\u7ecf\u5386\u4e00\u4e2a <strong>\u201c\u5168\u91cf\u590d\u5236\u201d<\/strong> \u7684\u8fc7\u7a0b\u6765\u83b7\u53d6\u4e3b\u8282\u70b9\u4e0a\u7684\u5168\u90e8\u6570\u636e\uff0c\u518d\u8fdb\u5165\u6301\u7eed\u589e\u91cf\u590d\u5236\u9636\u6bb5\u3002<\/p>\n<h4>2.1 \u4ece\u8282\u70b9\u4e0e\u4e3b\u8282\u70b9\u7684\u521d\u59cb\u63e1\u624b<\/h4>\n<ol>\n<li><strong>\u4ece\u8282\u70b9\u914d\u7f6e\u4e86 <code>slaveof &lt;master-host&gt; &lt;master-port&gt;<\/code><\/strong>\uff08\u6216 <code>replicaof &lt;master-host&gt; &lt;master-port&gt;<\/code>\uff09\u540e\uff0c\u5728\u542f\u52a8\u65f6\u4f1a\u5c1d\u8bd5\u5411\u4e3b\u8282\u70b9\u53d1\u8d77\u8fde\u63a5\uff1b<\/li>\n<li><strong>\u4ece\u8282\u70b9\u53d1\u9001 <code>PING<\/code><\/strong>\uff1a\u5728\u6b63\u5f0f\u5f00\u59cb\u590d\u5236\u524d\uff0c\u4ece\u8282\u70b9\u901a\u5e38\u4f1a\u5148\u4e0e\u4e3b\u8282\u70b9\u8fdb\u884c\u4e00\u6b21\u7b80\u5355\u7684\u201c\u5fc3\u8df3\u201d\u8bf7\u6c42\uff08<code>PING<\/code>\uff09\uff0c\u4ee5\u68c0\u6d4b\u7f51\u7edc\u548c\u9274\u5b9a\u4e3b\u8282\u70b9\u662f\u5426\u53ef\u8bbf\u95ee\uff1b<\/li>\n<li><strong>\u4e3b\u8282\u70b9\u8fd4\u56de <code>PONG<\/code><\/strong>\uff1a\u82e5\u4e3b\u8282\u70b9\u53ef\u8bbf\u95ee\uff0c\u4f1a\u56de\u590d <code>PONG<\/code>\uff0c\u63e1\u624b\u9636\u6bb5\u6210\u529f\u3002<\/li>\n<\/ol>\n<h4>2.2 \u89e6\u53d1\u5168\u91cf\u590d\u5236\uff08Full Resynchronization\uff09<\/h4>\n<p>\u5728\u63e1\u624b\u5b8c\u6210\u540e\uff0c\u4ece\u8282\u70b9\u4f1a\u5411\u4e3b\u8282\u70b9\u53d1\u9001 <code>PSYNC ? -1<\/code> \u547d\u4ee4\uff0c\u610f\u5373\u201c\u6211\u6ca1\u6709\u4efb\u4f55\u5df2\u77e5\u7684 offset\uff0c\u4e5f\u4e0d\u77e5\u9053\u4f60\u7684 runid\uff0c\u9700\u8981\u8fdb\u884c\u4e00\u6b21\u5168\u91cf\u590d\u5236\u201d\u3002<\/p>\n<ul>\n<li>\u5982\u679c\u4e3b\u8282\u70b9\u68c0\u6d4b\u5230\u4ece\u8282\u70b9\u7684\u8bf7\u6c42\u65e0\u6cd5\u8fdb\u884c\u90e8\u5206\uff08\u589e\u91cf\uff09\u590d\u5236\uff08\u56e0\u4e3a\u662f\u65b0\u52a0\u5165\u6216 backlog \u4e0d\u53ef\u7528\uff09\uff0c\u5219\u4f1a\u8fd4\u56de <code>FULLRESYNC &lt;master_runid&gt; &lt;offset&gt;<\/code> \u8868\u793a\u9700\u8981\u8fdb\u884c\u5168\u91cf\u590d\u5236\u3002<\/li>\n<li>\u4ece\u8282\u70b9\u6536\u5230 <code>FULLRESYNC<\/code> \u540e\uff0c\u4f1a\u8bb0\u5f55\u4e0b\u4e3b\u8282\u70b9\u7684 runid \u548c offset\uff08\u4ece\u8282\u70b9\u6b64\u65f6\u7684\u672c\u5730 offset \u4e5f\u5c06\u91cd\u7f6e\uff09\u3002<\/li>\n<\/ul>\n<h4>2.3 \u4e3b\u8282\u70b9\u751f\u6210 RDB \u5e76\u53d1\u9001<\/h4>\n<ol>\n<li>\u4e3b\u8282\u70b9\u6267\u884c <code>BGSAVE<\/code>\n<ul>\n<li>\u4e3b\u8282\u70b9 <code>fork()<\/code> \u51fa\u5b50\u8fdb\u7a0b\u5c06\u5185\u5b58\u5feb\u7167\u4fdd\u5b58\u4e3a RDB \u6587\u4ef6\uff1b<\/li>\n<li>\u5728\u751f\u6210 RDB \u8fc7\u7a0b\u4e2d\uff0c\u4e3b\u8282\u70b9\u8fd8\u4f1a\u5c06\u65b0\u4ea7\u751f\u7684\u5199\u547d\u4ee4\u5b58\u50a8\u5230 <strong>\u590d\u5236\u7f13\u51b2\u533a<\/strong>\uff08\u6216\u79f0 \u201c\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a + \u989d\u5916 buffer\u201d\uff09\u91cc\uff0c\u4ee5\u4fbf\u540e\u7eed\u7ed9\u4ece\u8282\u70b9\u8865\u5145\u201c\u5feb\u7167\u751f\u6210\u9636\u6bb5\u201d\u9057\u6f0f\u7684\u5199\u64cd\u4f5c\uff1b<\/li>\n<\/ul>\n<\/li>\n<li>\u4e3b\u8282\u70b9\u5c06 RDB \u6587\u4ef6\u901a\u8fc7\u7f51\u7edc\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\n<ul>\n<li>\u5f53\u5b50\u8fdb\u7a0b\u5b8c\u6210 RDB \u6587\u4ef6\u7684\u751f\u6210\u540e\uff0c\u4e3b\u8282\u70b9\u4f1a\u628a RDB \u6587\u4ef6\u76f4\u63a5\u901a\u8fc7 socket \u6d41\u65b9\u5f0f\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\uff08\u800c\u4e0d\u4e00\u5b9a\u662f\u5148\u5b58\u76d8\u518d\u8bfb\u53d6\uff0c\u8fd9\u5728\u9ad8\u7248\u672c Redis \u4e2d\u662f\u53ef\u914d\u7f6e\/\u53ef\u4f18\u5316\u7684\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4>2.4 \u4ece\u8282\u70b9\u52a0\u8f7d RDB<\/h4>\n<ol>\n<li>\u6e05\u7a7a\u672c\u5730\u6570\u636e\n<ul>\n<li>\u4e3a\u786e\u4fdd\u548c\u4e3b\u8282\u70b9\u6570\u636e\u5b8c\u5168\u4e00\u81f4\uff0c\u4ece\u8282\u70b9\u4f1a\u5148\u6e05\u7a7a\u5185\u5b58\u4e2d\u7684\u65e7\u6570\u636e\uff1b<\/li>\n<\/ul>\n<\/li>\n<li>\u52a0\u8f7d RDB \u6587\u4ef6\n<ul>\n<li>\u4ece\u8282\u70b9\u5c06\u63a5\u6536\u5230\u7684 RDB \u6587\u4ef6\u5185\u5bb9\u76f4\u63a5\u5199\u5230\u5185\u5b58\u4e2d\uff0c\u6062\u590d\u6210\u4e0e\u4e3b\u8282\u70b9\u4e00\u81f4\u7684\u6570\u636e\u72b6\u6001\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4>2.5 \u4f20\u8f93\u5e76\u6267\u884c\u589e\u91cf\u6307\u4ee4<\/h4>\n<ul>\n<li>\u5728 RDB \u4f20\u8f93\u548c\u52a0\u8f7d\u7684\u8fd9\u6bb5\u65f6\u95f4\u91cc\uff0c\u4e3b\u8282\u70b9\u4e0d\u65ad\u6709\u65b0\u7684\u5199\u547d\u4ee4\u88ab\u6267\u884c\uff0c\u8fd9\u4e9b\u547d\u4ee4\u88ab\u5b58\u50a8\u5728\u4e3b\u8282\u70b9\u7684\u590d\u5236\u7f13\u51b2\u533a\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u52a0\u8f7d\u5b8c RDB \u540e\uff0c\u4e3b\u8282\u70b9\u4f1a\u628a\u590d\u5236\u7f13\u51b2\u533a\u4e2d\u7684\u6240\u6709\u65b0\u5199\u547d\u4ee4\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u6309\u987a\u5e8f\u6267\u884c\u8fd9\u4e9b\u5199\u547d\u4ee4\uff0c\u8ba9\u81ea\u8eab\u7684\u6570\u636e\u72b6\u6001\u8ffd\u8d76\u5230\u4e3b\u8282\u70b9\u5f53\u524d\u6700\u65b0\u72b6\u6001\u3002<\/li>\n<\/ul>\n<h4>2.6 \u8fdb\u5165\u6301\u7eed\u590d\u5236\u9636\u6bb5<\/h4>\n<ul>\n<li>\u5b8c\u6210\u4e0a\u8ff0\u8fc7\u7a0b\u540e\uff0c\u4e3b\u4ece\u6570\u636e\u4e00\u81f4\uff1b<\/li>\n<li>\u4e3b\u8282\u70b9\u9488\u5bf9\u540e\u7eed\u6240\u6709\u5199\u64cd\u4f5c\uff08\u547d\u4ee4\u6d41\uff09\u4f1a\u5b9e\u65f6\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\uff0c\u4ece\u8282\u70b9\u4e5f\u4f1a\u5b9e\u65f6\u6267\u884c\u8fd9\u4e9b\u64cd\u4f5c\uff0c\u4f7f\u5f97\u4e3b\u4ece\u6570\u636e\u4fdd\u6301\u540c\u6b65\u3002<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u5c0f\u7ed3<\/strong>\uff1a\u5f53\u4ece\u8282\u70b9<strong>\u7b2c\u4e00\u6b21<\/strong>\u8fde\u5230\u4e3b\u8282\u70b9\u6216<strong>\u65ad\u7ebf\u65f6\u95f4\u8fc7\u4e45<\/strong>\u65f6\uff0c\u5c31\u4f1a\u89e6\u53d1\u8fd9\u6837\u4e00\u6b21\u8f83\u4e3a\u6d88\u8017\u8d44\u6e90\u7684 <strong>\u5168\u91cf\u590d\u5236<\/strong>\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h3>3. \u65e5\u5e38\u77ed\u6682\u65ad\u7ebf\u65f6\u7684\u589e\u91cf\u540c\u6b65\u6d41\u7a0b<\/h3>\n<p>\u5728\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0cRedis \u4f1a\u5c3d\u91cf\u901a\u8fc7 <strong>\u589e\u91cf\u590d\u5236\uff08Partial Resynchronization\uff09<\/strong> \u6765\u540c\u6b65\uff0c\u4ee5\u907f\u514d\u5168\u91cf\u590d\u5236\u5e26\u6765\u7684\u5927\u89c4\u6a21\u6570\u636e\u4f20\u8f93\u548c\u4e3b\u8282\u70b9\u78c1\u76d8\/CPU\u5f00\u9500\u3002\u589e\u91cf\u590d\u5236\u53d1\u751f\u5728\uff1a<\/p>\n<ul>\n<li>\u4ece\u8282\u70b9\u4e0e\u4e3b\u8282\u70b9\u7684\u7f51\u7edc\u51fa\u73b0\u77ed\u6682\u65ad\u7ebf\uff1b<\/li>\n<li>\u4e3b\u8282\u70b9\u91cd\u542f\u540e runid \u4e0d\u53d8\uff082.8+ \u7684 \u201c\u4e3b\u8282\u70b9\u90e8\u5206\u91cd\u540c\u6b65\u201d \u573a\u666f\uff0c\u4f46\u5982\u679c\u91cd\u542f\u540e runid \u6539\u53d8\u5219\u65e0\u6cd5\u589e\u91cf\uff09\uff1b<\/li>\n<li>\u4e3b\u8282\u70b9\u4fdd\u5b58\u4e86\u8db3\u591f\u7684 backlog \u6570\u636e\u3002<\/li>\n<\/ul>\n<h4>3.1 \u89e6\u53d1\u589e\u91cf\u590d\u5236<\/h4>\n<p>\u5f53\u4ece\u8282\u70b9\u91cd\u65b0\u8fde\u4e0a\u4e3b\u8282\u70b9\u540e\uff0c\u4f1a\u53d1\u9001\u547d\u4ee4\uff1a<\/p>\n<pre><code>PSYNC &lt;master_runid&gt; &lt;offset&gt;<\/code><\/pre>\n<ul>\n<li>\u5176\u4e2d <code>&lt;master_runid&gt;<\/code> \u4e3a\u4ece\u8282\u70b9\u4e0a\u4e00\u6b21\u8bb0\u5f55\u7684\u4e3b\u8282\u70b9 runid\uff1b<\/li>\n<li><code>&lt;offset&gt;<\/code> \u4e3a\u4ece\u8282\u70b9\u5df2\u590d\u5236\u5230\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u8282\/\u547d\u4ee4\u504f\u79fb\u91cf\u3002<\/li>\n<\/ul>\n<h4>3.2 \u4e3b\u8282\u70b9\u5224\u65ad\u80fd\u5426\u589e\u91cf<\/h4>\n<p>\u4e3b\u8282\u70b9\u6536\u5230\u4e0a\u8ff0\u8bf7\u6c42\u540e\uff0c\u4f1a\u6839\u636e\u4ee5\u4e0b\u6761\u4ef6\u5224\u65ad\uff1a<\/p>\n<ol>\n<li>runid \u662f\u5426\u5339\u914d\n<ul>\n<li>\u5982\u679c\u4ece\u8282\u70b9\u643a\u5e26\u7684 runid \u548c\u4e3b\u8282\u70b9\u672c\u8eab\u7684 runid \u76f8\u540c\uff0c\u8bf4\u660e\u8fd8\u662f\u540c\u4e00\u4e2a\u4e3b\u8282\u70b9\uff08\u6216\u4e3b\u8282\u70b9\u91cd\u542f\u4f46 runid \u590d\u7528\u4e86\uff09\uff1b\u5982\u679c\u4e0d\u5339\u914d\uff0c\u5c31\u5fc5\u987b\u8d70\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<li>offset \u662f\u5426\u5728 backlog \u8303\u56f4\u5185\n<ul>\n<li>\u4e3b\u8282\u70b9\u68c0\u67e5\u81ea\u8eab\u7684 replication backlog\uff0c\u5224\u65ad\u8be5 offset \u662f\u5426\u4ecd\u5728 backlog \u7684\u53ef\u7528\u8303\u56f4\u5185\uff1a\n<ul>\n<li>\u5982\u679c backlog \u4e2d\u4f9d\u7136\u4fdd\u5b58\u4e86 offset \u4e4b\u540e\u6240\u6709\u7684\u547d\u4ee4\uff0c\u5219\u53ef\u4ee5\u6267\u884c\u201c\u589e\u91cf\u590d\u5236\u201d\uff1b<\/li>\n<li>\u5982\u679c\u5df2\u7ecf\u88ab\u8986\u76d6\uff08\u8bf4\u660e\u4ece\u8282\u70b9\u7f3a\u5931\u592a\u591a\u6570\u636e\uff09\uff0c\u53ea\u80fd\u9000\u56de\u5230\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4>3.3 \u6267\u884c\u589e\u91cf\u590d\u5236<\/h4>\n<ul>\n<li>\u5982\u679c\u5224\u65ad\u53ef\u4ee5\u589e\u91cf\uff1a\u4e3b\u8282\u70b9\u5c31\u4ece backlog \u4e2d\u53d6\u51fa offset \u4e4b\u540e\u7684\u547d\u4ee4\uff0c\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u4f9d\u6b21\u6267\u884c\uff0c\u66f4\u65b0\u81ea\u8eab\u6570\u636e\u5e76\u5c06 offset \u5f80\u524d\u63a8\u8fdb\uff1b<\/li>\n<li>\u5f53 backlog \u7684\u7f3a\u5931\u547d\u4ee4\u5168\u90e8\u6267\u884c\u5b8c\u6bd5\u540e\uff0c\u4ece\u8282\u70b9\u4e0e\u4e3b\u8282\u70b9\u518d\u6b21\u5230\u8fbe\u4e00\u81f4\u72b6\u6001\uff0c\u8fdb\u5165\u6b63\u5e38\u7684\u5b9e\u65f6\u590d\u5236\u9636\u6bb5\u3002<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u589e\u91cf\u590d\u5236<\/strong>\u53ea\u9700\u53d1\u9001\u4e22\u5931\u7684\u6570\u636e\u6307\u4ee4\uff0c\u4e0d\u9700\u91cd\u65b0\u52a0\u8f7d\u5168\u91cf\u6570\u636e\uff0c\u5927\u5927\u51cf\u5c11\u4e86\u7f51\u7edc\u548c CPU \u7b49\u8d44\u6e90\u7684\u5f00\u9500\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h3>4. \u6b63\u5e38\u4e3b\u4ece\u590d\u5236\uff08\u6301\u7eed\u540c\u6b65\uff09<\/h3>\n<p>\u5728\u4ece\u8282\u70b9\u5b8c\u6210\u5168\u91cf\u6216\u589e\u91cf\u6570\u636e\u540c\u6b65\u540e\uff0c\u5c31\u8fdb\u5165\u4e86<strong>\u6301\u7eed\u590d\u5236<\/strong>\u9636\u6bb5\u3002\u6b64\u65f6\uff0c\u4e3b\u8282\u70b9\u5bf9\u5916\u6267\u884c\u7684<strong>\u5199\u64cd\u4f5c<\/strong>\u4f1a\u540c\u65f6\u590d\u5236\u7ed9\u6240\u6709\u4ece\u8282\u70b9\uff0c\u4ece\u8282\u70b9\u5b9e\u65f6\uff08\u6216\u5728\u6beb\u79d2\u7ea7\u5ef6\u8fdf\u5185\uff09\u6267\u884c\u8fd9\u4e9b\u5199\u547d\u4ee4\uff0c\u4fdd\u8bc1\u4e3b\u4ece\u6570\u636e\u6700\u7ec8\u4e00\u81f4\u3002<\/p>\n<p>\u8fd9\u4e00\u9636\u6bb5\u5305\u542b\u4ee5\u4e0b\u7ec6\u8282\uff1a<\/p>\n<ol>\n<li>\n<p>\u547d\u4ee4\u4f20\u64ad<\/p>\n<ul>\n<li>\u4e3b\u8282\u70b9\u6bcf\u6536\u5230\u4e00\u6761\u5199\u547d\u4ee4\uff0c\u5728\u5904\u7406\u5b8c\u540e\u4f1a\u5c06\u8be5\u547d\u4ee4\u5199\u5165\u81ea\u5df1\u7684\u590d\u5236\u6d41\uff0c\u5e76\u5c06\u5176\u53d1\u9001\u7ed9\u6240\u6709\u5904\u4e8e\u201c\u5728\u7ebf\u201d\u72b6\u6001\u7684\u4ece\u8282\u70b9\uff1b<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u4ece\u8282\u70b9\u5e94\u7528\u547d\u4ee4<\/p>\n<ul>\n<li>\u4ece\u8282\u70b9\u6536\u5230\u547d\u4ee4\u540e\uff0c\u987a\u5e8f\u6267\u884c\u76f8\u5e94\u7684\u5199\u64cd\u4f5c\uff0c\u4fdd\u8bc1\u6570\u636e\u72b6\u6001\u4e0e\u4e3b\u8282\u70b9\u540c\u6b65\uff1b<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u5fc3\u8df3\u673a\u5236<\/p>\n<ul>\n<li>\u4e3b\u4ece\u4e4b\u95f4\u4f1a\u5468\u671f\u6027\u53d1\u9001 <code>REPLCONF ACK &lt;offset&gt;<\/code> \u7b49\u547d\u4ee4\u6765\u7ef4\u6301\u5fc3\u8df3\uff0c\u5e76\u66f4\u65b0\u53cc\u65b9\u7684 offset\uff1b<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u6545\u969c\u8f6c\u79fb\/\u9009\u4e3e<\/p>\n<p>\uff08\u5982\u6709 Sentinel \u6216 Redis Cluster\uff09<\/p>\n<ul>\n<li>\u82e5\u4e3b\u8282\u70b9\u6545\u969c\u6216\u7f51\u7edc\u4e0d\u53ef\u8fbe\uff0c\u4ece\u8282\u70b9\u53ef\u5728\u67d0\u4e9b\u673a\u5236\uff08\u6bd4\u5982 Sentinel\uff09\u4e0b\u88ab\u63d0\u5347\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\uff0c\u5176\u4ed6\u4ece\u8282\u70b9\u6539\u4e3a\u590d\u5236\u8fd9\u4e2a\u65b0\u7684\u4e3b\u8282\u70b9\uff0c\u5b9e\u73b0\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h3>5. \u5c0f\u7ed3<\/h3>\n<ol>\n<li><strong>\u521d\u6b21\u8fde\u63a5\u6216\u5927\u8303\u56f4\u6570\u636e\u4e22\u5931<\/strong>\u65f6\uff0c\u4ece\u8282\u70b9\u4f1a\u8fdb\u884c <strong>\u5168\u91cf\u590d\u5236<\/strong>\uff1a\n<ul>\n<li>\u4e3b\u8282\u70b9 <code>BGSAVE<\/code> \u751f\u6210 RDB \u5e76\u53d1\u9001\u7ed9\u4ece\u8282\u70b9\uff1b<\/li>\n<li>\u4ece\u8282\u70b9\u52a0\u8f7d RDB\uff1b<\/li>\n<li>\u540c\u6b65\u5168\u91cf\u590d\u5236\u671f\u95f4\u4e3b\u8282\u70b9\u7684\u589e\u91cf\u547d\u4ee4\uff1b<\/li>\n<li>\u8fdb\u5165\u6301\u7eed\u590d\u5236\u9636\u6bb5\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u77ed\u6682\u65ad\u7ebf\u4e14 backlog \u6570\u636e\u4ecd\u6709\u6548<\/strong>\u65f6\uff0c\u53ef\u4ee5 <strong>\u589e\u91cf\u590d\u5236<\/strong>\uff1a\n<ul>\n<li>\u4ece\u8282\u70b9\u643a\u5e26\u4e0a\u6b21\u5df2\u77e5\u7684 runid \u548c offset \u53d1\u8d77 <code>PSYNC<\/code> \u8bf7\u6c42\uff1b<\/li>\n<li>\u82e5 runid \u76f8\u540c\u4e14 offset \u5728 backlog \u8303\u56f4\u5185\uff0c\u5219\u53ea\u9700\u53d1\u9001\u7f3a\u5931\u7684\u547d\u4ee4\uff1b<\/li>\n<li>\u5b8c\u6210\u7f3a\u5931\u547d\u4ee4\u540e\u8fdb\u5165\u6301\u7eed\u590d\u5236\u9636\u6bb5\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6301\u7eed\u590d\u5236<\/strong>\u9636\u6bb5\u4e0b\uff0c\u4e3b\u8282\u70b9\u7684\u6240\u6709\u5199\u64cd\u4f5c\u4f1a\u540c\u65f6\u5e7f\u64ad\u7ed9\u4ece\u8282\u70b9\uff0c\u4ece\u8282\u70b9\u5b9e\u65f6\u6267\u884c\uff0c\u4ee5\u4fdd\u6301\u4e0e\u4e3b\u8282\u70b9\u6570\u636e\u4e00\u81f4\u3002<\/li>\n<\/ol>\n<p>\u5728\u5b9e\u9645\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u6211\u4eec\u4f1a\u901a\u8fc7\u5408\u7406\u8bbe\u7f6e <code>repl-backlog-size<\/code> \u7b49\u53c2\u6570\u6765\u589e\u5927 backlog \u7f13\u51b2\uff0c\u5c3d\u53ef\u80fd\u63d0\u9ad8\u589e\u91cf\u590d\u5236\u7684\u6210\u529f\u7387\uff0c\u964d\u4f4e\u5168\u91cf\u590d\u5236\u5e26\u6765\u7684\u538b\u529b\u548c\u98ce\u9669\u3002\u8fd9\u6837\u80fd\u591f\u4f7f\u4e3b\u4ece\u67b6\u6784\u5728\u9ad8\u5e76\u53d1\u3001\u7f51\u7edc\u6296\u52a8\u7b49\u73af\u5883\u4e0b\u66f4\u7a33\u5b9a\u5730\u8fd0\u884c\u3002<\/p>\n<h1>8.Redis \u7ea7\u8054\u590d\u5236<\/h1>\n<p>\u5728 <strong>Redis<\/strong> \u4e2d\uff0c\u6240\u8c13\u201c\u7ea7\u8054\u590d\u5236\u201d\uff08\u6709\u65f6\u4e5f\u88ab\u79f0\u4f5c\u201c\u94fe\u5f0f\u590d\u5236\u201d\u6216\u201c\u591a\u7ea7\u590d\u5236\u201d\uff09\uff0c\u662f\u6307\u4e00\u4e2a\u4ece\u8282\u70b9\uff08Replica\uff09\u4e0d\u4ec5\u53ef\u4ee5\u4ece\u4e3b\u8282\u70b9\uff08Master\uff09\u590d\u5236\u6570\u636e\uff0c\u4e5f\u53ef\u4ee5\u4ece\u53e6\u4e00\u4e2a\u4ece\u8282\u70b9\u4e0a\u518d\u590d\u5236\u6570\u636e\uff0c\u4ece\u800c\u5f62\u6210\u4e00\u6761\u4e3b\u2014\u4ece\u2014\u4ece\u7684\u201c\u94fe\u5f0f\u201d\u7ed3\u6784\u3002\u8fd9\u6837\u505a\u7684\u76ee\u7684\u901a\u5e38\u662f\u4e3a\u4e86 <strong>\u5206\u62c5\u4e3b\u8282\u70b9\u7684\u7f51\u7edc\u8d1f\u8f7d<\/strong> \u6216 <strong>\u5e94\u5bf9\u8de8\u5730\u57df\/\u7f51\u7edc\u5c42\u7ea7\u7684\u90e8\u7f72\u9700\u6c42<\/strong>\u3002<\/p>\n<hr \/>\n<h2>\u4e00\u3001\u7ea7\u8054\u590d\u5236\u7684\u57fa\u672c\u6982\u5ff5<\/h2>\n<ol>\n<li>\n<p><strong>\u4f20\u7edf\u4e3b\u4ece\u7ed3\u6784<\/strong><\/p>\n<ul>\n<li>\u5178\u578b\u7684 Redis \u4e3b\u4ece\u590d\u5236\u62d3\u6251\u662f \u201c\u4e00\u4e3b\u591a\u4ece\uff08Star \u578b\uff09\u201d\uff0c\u6240\u6709\u4ece\u8282\u70b9\u90fd\u76f4\u63a5\u4ece\u4e3b\u8282\u70b9\u590d\u5236\u6570\u636e\u3002<\/li>\n<li>\u4f18\u70b9\uff1a\u62d3\u6251\u7b80\u5355\uff0c\u4fbf\u4e8e\u8fd0\u7ef4\uff0c\u4e3b\u8282\u70b9\u6545\u969c\u540e\u4e5f\u80fd\u8f83\u5feb\u5730\u8fdb\u884c\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<li>\u7f3a\u70b9\uff1a\u5f53\u4ece\u8282\u70b9\u6570\u91cf\u5f88\u591a\u65f6\uff0c\u4e3b\u8282\u70b9\u7684\u7f51\u7edc\u5e26\u5bbd\u548c CPU \u8d1f\u8f7d\u538b\u529b\u4f1a\u589e\u5927\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u7ea7\u8054\u590d\u5236\u7ed3\u6784<\/strong><\/p>\n<ul>\n<li>\n<p>\u5728\u7ea7\u8054\u590d\u5236\u6a21\u5f0f\u4e0b\uff0c\u53ef\u4ee5\u5c06\u4e00\u90e8\u5206\u4ece\u8282\u70b9\u914d\u7f6e\u4e3a \u201c\u4ece\u8282\u70b9\u7684\u4ece\u8282\u70b9\u201d\uff0c\u5373\uff1a<\/p>\n<pre><code>Master -> Replica1 -> Replica2 -> Replica3 -> ...<\/code><\/pre>\n<\/li>\n<li>\n<p>\u5bf9\u4e8e Replica2 \u800c\u8a00\uff0c\u5b83\u7684\u201c\u4e0a\u6e38\u201d\u8282\u70b9\u5c31\u662f Replica1\uff0cReplica2 \u4f1a\u628a Replica1 \u5f53\u4f5c\u201cMaster\u201d\u6765\u590d\u5236\u6570\u636e\uff1b\u800c Replica1 \u5b9e\u9645\u53c8\u662f Master \u7684\u4ece\u8282\u70b9\u3002\u4ee5\u6b64\u7c7b\u63a8\uff0c\u53ef\u4ee5\u5f62\u6210\u591a\u7ea7 \u201c\u94fe\u5f0f\u201d \u590d\u5236\u3002<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u9002\u7528\u573a\u666f<\/strong><\/p>\n<ul>\n<li><strong>\u8de8\u5730\u57df\/\u8de8\u673a\u623f<\/strong>\uff1a\u6709\u65f6\u5e0c\u671b\u628a\u6570\u636e\u5148\u4ece\u4e3b\u673a\u623f\uff08Master\uff09\u590d\u5236\u5230\u540c\u57ce\/\u540c\u53ef\u7528\u533a\u7684\u67d0\u4e2a\u4ece\u8282\u70b9\uff0c\u518d\u4ece\u8fd9\u4e2a\u4ece\u8282\u70b9\u590d\u5236\u5230\u66f4\u8fdc\u7684\u5206\u652f\u673a\u623f\uff0c\u4ece\u800c\u51cf\u5c0f\u8de8\u5730\u57df\u7684\u7f51\u7edc\u5ef6\u8fdf\u548c\u5e26\u5bbd\u538b\u529b\u3002<\/li>\n<li><strong>\u51cf\u5c11 Master \u538b\u529b<\/strong>\uff1a\u5f53\u4e3b\u8282\u70b9\u5e26\u5bbd\u6216 CPU \u8d44\u6e90\u8f83\u6709\u9650\uff0c\u800c\u9700\u8981\u90e8\u7f72\u5927\u91cf\u53ea\u8bfb\u526f\u672c\uff0c\u53ef\u8003\u8651\u8ba9\u67d0\u4e9b\u526f\u672c\u4ece\u201c\u4e8c\u7ea7\u526f\u672c\u201d\u751a\u81f3\u201c\u4e09\u7ea7\u526f\u672c\u201d\u62c9\u53d6\u6570\u636e\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e8c\u3001Redis \u7ea7\u8054\u590d\u5236\u7684\u5de5\u4f5c\u539f\u7406<\/h2>\n<p>Redis \u7684\u4e3b\u4ece\u590d\u5236\u662f\u901a\u8fc7 <strong>PSYNC<\/strong>\uff08\u90e8\u5206\u91cd\u540c\u6b65\uff09\u673a\u5236\u6765\u5b9e\u73b0\u7684\uff0c\u6838\u5fc3\u5305\u62ec\uff1a<\/p>\n<ol>\n<li><strong>\u590d\u5236\u504f\u79fb\u91cf\uff08Replication Offset\uff09\u548c\u4e3b\u4ece ID\uff08Replication ID\uff09<\/strong>\n<ul>\n<li>\u6bcf\u4e2a\u8282\u70b9\u90fd\u6709\u4e00\u4e2a\u4e0d\u65ad\u9012\u589e\u7684\u590d\u5236\u504f\u79fb\u91cf <code>offset<\/code>\uff0cMaster \u5728\u53d1\u9001\u5199\u64cd\u4f5c\u65f6\u66f4\u65b0 offset\uff0c\u5e76\u5728 backlog \u4e2d\u4fdd\u5b58\u4e00\u6bb5\u65f6\u95f4\u7684\u64cd\u4f5c\u547d\u4ee4\u5386\u53f2\u3002<\/li>\n<li>\u5f53 Replica\uff08\u4ece\u8282\u70b9\uff09\u5411\u4e0a\u6e38\u8bf7\u6c42\u540c\u6b65\u65f6\uff0c\u4f1a\u5e26\u4e0a\u81ea\u5df1\u5f53\u524d\u7684 offset \u548c\u4e0a\u6b21\u590d\u5236\u7684 Master Replid\uff0c\u901a\u8fc7\u8fd9\u4e8c\u8005\u6765\u5224\u65ad\u662f\u5426\u80fd\u8fdb\u884c\u90e8\u5206\u91cd\u540c\u6b65\uff08PSYNC\uff09\u8fd8\u662f\u9700\u8981\u5168\u91cf\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5168\u91cf\u590d\u5236 vs. \u90e8\u5206\u91cd\u540c\u6b65<\/strong>\n<ul>\n<li>\u5f53\u4e00\u4e2a\u4ece\u8282\u70b9\u9996\u6b21\u8fde\u63a5\u5230\u4e0a\u6e38\u8282\u70b9\uff08\u4e0d\u7ba1\u8be5\u4e0a\u6e38\u662f Master \u8fd8\u662f\u53e6\u4e00\u4e2a Replica\uff09\uff0c\u82e5\u65e0\u6cd5\u6ee1\u8db3\u90e8\u5206\u540c\u6b65\u6761\u4ef6\uff0c\u5c31\u4f1a\u89e6\u53d1\u5168\u91cf\u590d\u5236\uff08\u5373\u53d1\u9001 RDB + \u540e\u7eed\u589e\u91cf\u547d\u4ee4\uff09\u3002<\/li>\n<li>\u540e\u7eed\u77ed\u6682\u65ad\u7ebf\u91cd\u8fde\u65f6\uff0c\u5982\u679c\u4e0a\u6e38\u8282\u70b9\u7684 backlog \u8fd8\u4fdd\u7559\u7740\u4ece\u8282\u70b9\u7f3a\u5931\u7684\u547d\u4ee4\uff0c\u5c31\u80fd\u8d70\u90e8\u5206\u91cd\u540c\u6b65\uff0c\u51cf\u5c11\u7f51\u7edc\u548c IO \u5f00\u9500\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u591a\u7ea7\u590d\u5236\u7684\u672c\u8d28<\/strong>\n<ul>\n<li>\u4e0d\u7ba1\u201c\u4e0a\u6e38\u201d\u8282\u70b9\u662f Master \u8fd8\u662f\u53e6\u4e00\u4e2a Replica\uff0c\u5bf9\u4e0b\u6e38\u8282\u70b9\u800c\u8a00\u90fd\u662f\u4e00\u4e2a\u201c\u53d1\u9001\u590d\u5236\u6570\u636e\u201d\u7684\u6e90\u8282\u70b9\u3002Redis \u5185\u90e8\u5e76\u6ca1\u6709\u628a\u201c\u4ece\u8282\u70b9\u7684\u4ece\u8282\u70b9\u201d\u5f53\u6210\u4e00\u79cd\u7279\u522b\u7684\u89d2\u8272\uff0c\u6bcf\u4e2a Replica \u53ea\u77e5\u9053\u81ea\u5df1\u8981\u4ece\u201c\u4e0a\u6e38\u201d\u62c9\u53d6\u6570\u636e\u5e76\u4fdd\u6301\u540c\u6b65\u5373\u53ef\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e09\u3001Redis \u7ea7\u8054\u590d\u5236\u7684\u914d\u7f6e\u6b65\u9aa4<\/h2>\n<p>\u5047\u8bbe\u6211\u4eec\u6709\u5982\u4e0b\u8282\u70b9\uff1a<\/p>\n<ul>\n<li><strong>Master<\/strong>\uff1aIP \u4e3a <code>192.168.1.10<\/code>\uff0c\u7aef\u53e3 <code>6379<\/code><\/li>\n<li><strong>\u4e00\u7ea7\u4ece\u8282\u70b9\uff08Replica1\uff09<\/strong>\uff1aIP \u4e3a <code>192.168.1.11<\/code>\uff0c\u7aef\u53e3 <code>6379<\/code><\/li>\n<li><strong>\u4e8c\u7ea7\u4ece\u8282\u70b9\uff08Replica2\uff09<\/strong>\uff1aIP \u4e3a <code>192.168.1.12<\/code>\uff0c\u7aef\u53e3 <code>6379<\/code><\/li>\n<\/ul>\n<h3>1. \u914d\u7f6e Master<\/h3>\n<p>\u5728 Master \u7684 <code>redis.conf<\/code> \u4e2d\uff0c\u901a\u5e38\u65e0\u9700\u989d\u5916\u5f00\u542f\u4ec0\u4e48\u3002\u53ea\u8981\u786e\u4fdd\u80fd\u6b63\u5e38\u5bf9\u5916\u63d0\u4f9b\u670d\u52a1\u5373\u53ef\u3002\u82e5 Master \u8bbe\u6709\u5bc6\u7801\uff0c\u5219\u9700\u8981\u5728\u4ece\u8282\u70b9\u914d\u7f6e\u5bf9\u5e94\u7684 <code>masterauth<\/code>\u3002<\/p>\n<h3>2. \u914d\u7f6e\u4e00\u7ea7\u4ece\u8282\u70b9\uff08Replica1\uff09<\/h3>\n<ul>\n<li>\n<p>\u5728\u5176 <code>redis.conf<\/code>\u6216\u542f\u52a8\u53c2\u6570\u4e2d\u6307\u5b9a\uff1a<\/p>\n<pre><code class=\"language-bash\">replicaof 192.168.1.10 6379\n# \u5982\u679c Master \u8bbe\u7f6e\u4e86\u5bc6\u7801\uff1a\nmasterauth <master-password><\/code><\/pre>\n<\/li>\n<li>\n<p>\u542f\u52a8\u540e\uff0cReplica1 \u4f1a\u4ece Master \u62c9\u53d6\u5168\u91cf\u6570\u636e\u3002\u53ef\u901a\u8fc7 <code>INFO replication<\/code> \u67e5\u770b <code>master_link_status: up<\/code> \u5373\u8868\u793a\u540c\u6b65\u6210\u529f\u3002<\/p>\n<\/li>\n<\/ul>\n<h3>3. \u914d\u7f6e\u4e8c\u7ea7\u4ece\u8282\u70b9\uff08Replica2\uff09<\/h3>\n<ul>\n<li>\n<p>\u5728\u5176 <code>redis.conf<\/code>\u4e2d\uff0c\u8ba9\u5b83\u53bb\u590d\u5236 \u201c\u4e00\u7ea7\u4ece\u8282\u70b9\uff08Replica1\uff09\u201d\uff1a<\/p>\n<pre><code class=\"language-bash\">replicaof 192.168.1.11 6379\n# \u5982\u679c Replica1 \u4e5f\u542f\u7528\u4e86 requirepass\uff08\u5bf9\u5916\u8bbf\u95ee\uff09\uff0c\u5219\u9700\u8981:\nmasterauth <replica1-password><\/code><\/pre>\n<\/li>\n<li>\n<p>\u6ce8\u610f\uff0c\u8fd9\u91cc<strong>\u4e0d<\/strong>\u662f\u914d\u7f6e <code>replicaof 192.168.1.10 6379<\/code>\uff0c\u800c\u662f\u6307\u5411 \u201c\u4e00\u7ea7\u4ece\u8282\u70b9\u201d\u3002<\/p>\n<\/li>\n<li>\n<p>\u542f\u52a8\u540e\uff0cReplica2 \u4f1a\u628a Replica1 \u5f53\u4f5c\u201cMaster\u201d\uff0c\u5411\u5b83\u8fdb\u884c\u5168\u91cf\u6216\u90e8\u5206\u91cd\u540c\u6b65\u3002<\/p>\n<\/li>\n<\/ul>\n<h3>4. \u9a8c\u8bc1\u7ea7\u8054\u590d\u5236<\/h3>\n<ul>\n<li>\n<p>\u5728\u771f\u6b63\u7684 Master \u4e0a\u63d2\u5165\u4e00\u4e2a\u6d4b\u8bd5 Key\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -h 192.168.1.10 -p 6379 SET test_key \"hello_cascading\"<\/code><\/pre>\n<\/li>\n<li>\n<p>\u5148\u5728\u4e00\u7ea7\u4ece\u8282\u70b9\uff08Replica1\uff09\u9a8c\u8bc1\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -h 192.168.1.11 -p 6379 GET test_key\n# \u8fd4\u56de hello_cascading<\/code><\/pre>\n<\/li>\n<li>\n<p>\u518d\u5728\u4e8c\u7ea7\u4ece\u8282\u70b9\uff08Replica2\uff09\u9a8c\u8bc1\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -h 192.168.1.12 -p 6379 GET test_key\n# \u8fd4\u56de hello_cascading<\/code><\/pre>\n<\/li>\n<li>\n<p>\u5982\u679c\u90fd\u80fd\u67e5\u5230\u76f8\u540c\u6570\u636e\uff0c\u8bf4\u660e\u7ea7\u8054\u590d\u5236\u5df2\u751f\u6548\u3002<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\u56db\u3001\u7ea7\u8054\u590d\u5236\u7684\u4f18\u7f3a\u70b9<\/h2>\n<h3>1. \u4f18\u70b9<\/h3>\n<ol>\n<li><strong>\u5206\u62c5\u4e3b\u8282\u70b9\u538b\u529b<\/strong>\n<ul>\n<li>\u5982\u679c\u4ece\u8282\u70b9\u5f88\u591a\uff0c\u90fd\u76f4\u63a5\u8fde\u5230 Master\uff0cMaster \u7684\u7f51\u7edc\u5e26\u5bbd\u548c CPU \u53ef\u80fd\u5403\u7d27\u3002\u7ea7\u8054\u540e\uff0c\u53ea\u6709\u4e00\u7ea7 Replica \u8ddf Master \u540c\u6b65\uff0c\u5176\u4ed6\u8282\u70b9\u4ece\u8be5 Replica \u540c\u6b65\uff0c\u53ef\u4ee5\u663e\u8457\u51cf\u8f7b Master \u7684\u8d1f\u8f7d\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8de8\u7f51\u7edc \/ \u8de8\u673a\u623f\u4f18\u5316<\/strong>\n<ul>\n<li>\u5728\u591a\u673a\u623f\u90e8\u7f72\u573a\u666f\u4e0b\uff0c\u53ef\u4ee5\u5148\u5728\u672c\u5730\u673a\u623f\u642d\u5efa\u4e00\u4e2a\u4ece\u8282\u70b9\uff0c\u518d\u8ba9\u5176\u4ed6\u8fdc\u7a0b\u673a\u623f\u7684\u8282\u70b9\u4ece\u8fd9\u4e2a\u672c\u5730\u4ece\u8282\u70b9\u62c9\u53d6\u6570\u636e\uff0c\u51cf\u5c11\u8de8\u6570\u636e\u4e2d\u5fc3\u7684\u7f51\u7edc\u6d88\u8017\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>2. \u7f3a\u70b9<\/h3>\n<ol>\n<li><strong>\u589e\u52a0\u590d\u5236\u5ef6\u8fdf<\/strong>\n<ul>\n<li>\u6570\u636e\u4ece Master \u540c\u6b65\u5230 Replica1\uff0c\u518d\u5230 Replica2\uff0c\u4f1a\u6bd4\u76f4\u63a5\u4ece Master \u540c\u6b65\u591a\u4e00\u5c42\u5ef6\u8fdf\uff0c\u4e14\u94fe\u8d8a\u957f\uff0c\u5ef6\u8fdf\u8d8a\u5927\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6f5c\u5728\u5355\u70b9\u98ce\u9669<\/strong>\n<ul>\n<li>\u5982\u679c\u4e2d\u95f4\u7ea7\u8282\u70b9\uff08\u4f8b\u5982 Replica1\uff09\u51fa\u73b0\u6545\u969c\uff0c\u90a3\u4e48\u5b83\u4e0b\u6e38\u7684\u6240\u6709 Replica2\u3001Replica3 \u7b49\u90fd\u4f1a\u65e0\u6cd5\u83b7\u53d6\u66f4\u65b0\uff0c\u9700\u8981\u53ca\u65f6\u91cd\u65b0\u914d\u7f6e\u6216\u4fee\u590d\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8fd0\u7ef4\u590d\u6742\u5ea6\u66f4\u9ad8<\/strong>\n<ul>\n<li>\u9700\u8981\u7ef4\u62a4\u4e00\u6761\u94fe\u4e0a\u7684\u5065\u5eb7\u72b6\u51b5\uff0c\u4e86\u89e3\u6bcf\u4e00\u7ea7\u8282\u70b9\u7684\u72b6\u6001\uff1b\u6545\u969c\u8f6c\u79fb\uff08\u6545\u969c\u5207\u6362\uff09\u573a\u666f\u4e0b\u4e5f\u66f4\u590d\u6742\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e94\u3001\u7ea7\u8054\u590d\u5236\u7684\u6545\u969c\u4e0e\u8fd0\u7ef4\u8981\u70b9<\/h2>\n<ol>\n<li><strong>\u76d1\u63a7\u6bcf\u4e00\u7ea7\u8282\u70b9\u7684\u590d\u5236\u72b6\u6001<\/strong>\n<ul>\n<li>\u4f7f\u7528 <code>INFO replication<\/code> \u547d\u4ee4\u67e5\u770b <code>master_link_status<\/code> \u662f\u5426\u4e3a <code>up<\/code>\uff1b<\/li>\n<li>\u76d1\u63a7 <code>role<\/code>\u3001<code>repl_backlog_size<\/code>\u3001<code>master_sync_in_progress<\/code> \u4ee5\u53ca\u590d\u5236\u504f\u79fb\u91cf\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u907f\u514d\u94fe\u6761\u8fc7\u957f<\/strong>\n<ul>\n<li>\u867d\u7136\u7406\u8bba\u4e0a\u53ef\u4ee5\u591a\u7ea7\u590d\u5236\uff0c\u4f46\u4e00\u822c\u4e0d\u5efa\u8bae\u5c42\u6570\u8d85\u8fc7 2~3 \u7ea7\u3002\u8fc7\u957f\u7684\u94fe\u4f1a\u5e26\u6765\u8f83\u5927\u7684\u590d\u5236\u5ef6\u8fdf\u548c\u8f83\u9ad8\u7684\u6545\u969c\u98ce\u9669\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\uff08Sentinel \/ Cluster\uff09<\/strong>\n<ul>\n<li>\u82e5\u8981\u5b9e\u73b0\u81ea\u52a8\u6216\u534a\u81ea\u52a8\u7684\u6545\u969c\u8f6c\u79fb\uff0c\u53ef\u4ee5\u7ed3\u5408 Redis Sentinel \u6216\u8005 Redis Cluster\u3002<\/li>\n<li>\u9700\u8981\u6ce8\u610f\uff1aRedis Sentinel \u5728\u505a\u4e3b\u4ece\u5207\u6362\u65f6\uff0c\u9ed8\u8ba4\u53ea\u5173\u6ce8\u201c\u771f\u6b63\u7684 Master\u201d\u4e0e\u201c\u5176\u76f4\u8fde\u4ece\u8282\u70b9\u201d\u7684\u5173\u7cfb\uff1b\u5982\u679c\u4f7f\u7528\u7ea7\u8054\u590d\u5236\uff0c\u8fd8\u9700\u8981\u786e\u4fdd Sentinel \u80fd\u6b63\u786e\u611f\u77e5\u5230\u5404\u7ea7\u8282\u70b9\u7684\u72b6\u6001\uff0c\u4ee5\u4fbf\u5728\u6545\u969c\u65f6\u8fdb\u884c\u5408\u9002\u7684\u5207\u6362\u903b\u8f91\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7f51\u7edc\u4e0e\u5e26\u5bbd\u89c4\u5212<\/strong>\n<ul>\n<li>\u5728\u8de8\u673a\u623f\u6216\u8de8\u7f51\u7edc\u73af\u5883\u4e0b\uff0c\u9700\u8981\u5173\u6ce8\u5404\u4e2a\u8282\u70b9\u95f4\u7684\u5e26\u5bbd\u548c\u5ef6\u8fdf\uff0c\u786e\u4fdd\u4e0d\u4f1a\u56e0\u4e3a\u7f51\u7edc\u95ee\u9898\u5bfc\u81f4\u9891\u7e41\u7684\u590d\u5236\u4e2d\u65ad\u6216\u8d85\u65f6\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8d44\u6e90\u4f7f\u7528\u4e0e\u6269\u5bb9<\/strong>\n<ul>\n<li>\u7ea7\u8054\u590d\u5236\u53ef\u4ee5\u51cf\u5c11 Master \u5e26\u5bbd\u6216 CPU \u538b\u529b\uff0c\u4f46\u5e76\u6ca1\u6709\u964d\u4f4e\u6574\u4f53\u7684\u8d44\u6e90\u6d88\u8017\uff0c\u5c24\u5176\u5728\u63a5\u6536\u6570\u636e\u7684\u4e00\u65b9\uff08Replica1\uff09\u53ef\u80fd\u4f1a\u6709\u989d\u5916\u7684\u7f51\u7edc I\/O \u8d1f\u62c5\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u516d\u3001\u603b\u7ed3<\/h2>\n<p>Redis \u652f\u6301\u201c\u591a\u7ea7\u201d\u6216\u201c\u7ea7\u8054\u201d\u590d\u5236\uff0c\u5373\u8ba9\u67d0\u4e2a\u4ece\u8282\u70b9\u7ee7\u7eed\u4f5c\u4e3a\u5176\u4ed6\u4ece\u8282\u70b9\u7684\u4e0a\u6e38\uff0c\u4ece\u800c\u5f62\u6210\u4e00\u6761\u6216\u591a\u6761\u590d\u5236\u94fe\u3002\u5176\u6838\u5fc3\u673a\u5236\u4e0e\u666e\u901a\u4e3b\u4ece\u4e00\u81f4\uff0c\u90fd\u4f9d\u8d56 PSYNC \u8fdb\u884c\u5168\u91cf\u6216\u90e8\u5206\u91cd\u540c\u6b65\uff1b\u533a\u522b\u53ea\u5728\u4e8e\u4ece\u8282\u70b9\u7684 \u201cmaster\u201d \u53d8\u6210\u4e86\u53e6\u4e00\u4e2a Replica\u3002<\/p>\n<ul>\n<li><strong>\u5982\u4f55\u914d\u7f6e<\/strong>\uff1a\u5728\u4e8c\u7ea7\u6216\u66f4\u591a\u7ea7\u7684\u4ece\u8282\u70b9\u4e0a\uff0c\u901a\u8fc7 <code>replicaof &lt;\u4e0a\u6e38\u8282\u70b9IP&gt; &lt;\u7aef\u53e3&gt;<\/code> \u6307\u5411\u53e6\u4e00\u4e2a Replica \u5373\u53ef\u3002<\/li>\n<li><strong>\u4f55\u65f6\u4f7f\u7528<\/strong>\uff1a\u6700\u5e38\u89c1\u4e8e\u5927\u89c4\u6a21\u53ea\u8bfb\u8282\u70b9\u90e8\u7f72\u3001\u8de8\u673a\u623f\u540c\u6b65\u3001\u6216\u9700\u8981\u51cf\u5c11 Master \u538b\u529b\u7684\u573a\u666f\uff1b\u4f46\u8981\u6743\u8861\u5ef6\u8fdf\u548c\u8fd0\u7ef4\u590d\u6742\u5ea6\u3002<\/li>\n<li><strong>\u6545\u969c\u4e0e\u8fd0\u7ef4<\/strong>\uff1a\u9700\u8981\u5bf9\u6bcf\u4e00\u7ea7\u8282\u70b9\u90fd\u8fdb\u884c\u76d1\u63a7\uff0c\u4e00\u65e6\u4e0a\u6e38\u8282\u70b9\u6302\u4e86\uff0c\u4e0b\u6e38\u8282\u70b9\u4e5f\u4f1a\u540c\u6b65\u4e2d\u65ad\uff0c\u9700\u8981\u624b\u52a8\u6216\u4f7f\u7528 Sentinel\/Cluster \u81ea\u52a8\u91cd\u5efa\u590d\u5236\u5173\u7cfb\u3002<\/li>\n<\/ul>\n<p>\u603b\u7684\u6765\u8bf4\uff0c\u7ea7\u8054\u590d\u5236\u662f Redis \u63d0\u4f9b\u7684\u4e00\u4e2a\u7075\u6d3b\u9009\u9879\uff0c\u4f46\u5728\u591a\u6570\u5e38\u89c1\u90e8\u7f72\u4e2d\uff08\u5c24\u5176\u662f\u4e91\u73af\u5883\u5e26\u5bbd\u548c\u8d44\u6e90\u5145\u8db3\u7684\u60c5\u51b5\u4e0b\uff09\uff0c\u4ecd\u4ee5\u201c\u661f\u578b\u201d\u7684\u4e3b\u4ece\u67b6\u6784\u4e3a\u4e3b\u3002\u5982\u679c\u786e\u5b9e\u6709\u8de8\u7f51\u7edc\u6216\u5e26\u5bbd\u53d7\u9650\u573a\u666f\uff0c\u9700\u8981\u8c28\u614e\u8bbe\u8ba1\u548c\u89c4\u5212\u7ea7\u8054\u7684\u5c42\u7ea7\u3001\u76d1\u63a7\u53ca\u6545\u969c\u8f6c\u79fb\u7b56\u7565\u3002<\/p>\n<h1>9.Redis \u54e8\u5175(Sentinel)<\/h1>\n<p><img decoding=\"async\" src=\"https:\/\/typora-images-1307361841.cos.ap-beijing.myqcloud.com\/img\/v2-ce8d6e1105fe84f9c36901c4f66fd2e8_1440w.avis\" alt=\"img\" \/> <\/p>\n<p>Redis Sentinel\uff08\u54e8\u5175\uff09\u662f Redis \u5b98\u65b9\u63d0\u4f9b\u7684\u4e00\u5957\u9ad8\u53ef\u7528(High Availability)\u89e3\u51b3\u65b9\u6848\uff0c\u7528\u4e8e\u76d1\u63a7\u591a\u4e2a Redis \u670d\u52a1\u5668\u5b9e\u4f8b\u5e76\u5728\u4e3b\u8282\u70b9\u51fa\u73b0\u6545\u969c\u65f6\u8fdb\u884c\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\uff08Failover\uff09\u3002Sentinel \u7684\u76ee\u6807\u662f\u4fdd\u8bc1\u96c6\u7fa4\u7684\u5065\u58ee\u6027\u548c\u53ef\u7528\u6027\uff0c\u5e2e\u52a9\u8fd0\u7ef4\u4eba\u5458\u51cf\u5c11\u624b\u52a8\u5e72\u9884\u3002<\/p>\n<hr \/>\n<h2>\u4e00\u3001\u6838\u5fc3\u529f\u80fd<\/h2>\n<ol>\n<li><strong>\u76d1\u63a7\uff08Monitoring\uff09<\/strong><br \/>\nRedis Sentinel \u4f1a\u6301\u7eed\u76d1\u63a7\u4e3b\u8282\u70b9\u548c\u4ece\u8282\u70b9\u7684\u72b6\u6001\u662f\u5426\u6b63\u5e38\u3002\u4e00\u65e6\u68c0\u6d4b\u5230\u4e3b\u8282\u70b9\u65e0\u6cd5\u6b63\u5e38\u54cd\u5e94\uff0cSentinel \u4f1a\u6807\u8bb0\u8be5\u8282\u70b9\u4e3a\u4e3b\u89c2\u4e0b\u7ebf\uff08Subjectively Down\uff09\uff0c\u5e76\u5728\u591a\u4e2a Sentinel \u8fbe\u6210\u4e00\u81f4\u540e\uff0c\u8fdb\u4e00\u6b65\u8ba4\u5b9a\u5176\u4e3a\u5ba2\u89c2\u4e0b\u7ebf\uff08Objectively Down\uff09\u3002<\/li>\n<li><strong>\u901a\u77e5\uff08Notification\uff09<\/strong><br \/>\n\u5f53 Sentinel \u8bc6\u522b\u5230\u4e3b\u8282\u70b9\u5b95\u673a\u6216\u6545\u969c\u8f6c\u79fb\u53d1\u751f\u65f6\uff0c\u5b83\u53ef\u4ee5\u901a\u8fc7\u53d1\u5e03\u8ba2\u9605\u9891\u9053\uff08Pub\/Sub\uff09\u3001\u90ae\u4ef6\u3001Webhook \u7b49\u65b9\u5f0f\u901a\u77e5\u8fd0\u7ef4\u6216\u76f8\u5173\u7ec4\u4ef6\uff0c\u4ee5\u65b9\u4fbf\u53ca\u65f6\u5904\u7406\u3002<\/li>\n<li><strong>\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\uff08Automatic Failover\uff09<\/strong><br \/>\n\u5f53\u4e3b\u8282\u70b9\u88ab\u5224\u5b9a\u4e0d\u53ef\u7528\u65f6\uff0cSentinel \u4f1a\u4ece\u4ece\u8282\u70b9\u4e2d\u6311\u9009\u4e00\u4e2a\u5408\u9002\u7684\u8282\u70b9\u5c06\u5176\u5347\u7ea7\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\uff0c\u5e76\u91cd\u65b0\u914d\u7f6e\u5176\u4ed6\u4ece\u8282\u70b9\u6307\u5411\u65b0\u7684\u4e3b\u8282\u70b9\uff0c\u4fdd\u8bc1\u5e94\u7528\u80fd\u591f\u7ee7\u7eed\u4f7f\u7528 Redis \u670d\u52a1\u3002<\/li>\n<li><strong>\u914d\u7f6e\u63d0\u4f9b\uff08Configuration Provider\uff09<\/strong><br \/>\n\u5ba2\u6237\u7aef\u53ef\u4ee5\u901a\u8fc7 Sentinel \u83b7\u53d6\u5f53\u524d\u53ef\u7528\u7684\u4e3b\u8282\u70b9\u4fe1\u606f\uff0c\u5ba2\u6237\u7aef\u4e0d\u9700\u8981\u63d0\u524d\u77e5\u9053\u5177\u4f53\u7684\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u800c\u662f\u76f4\u63a5\u5411 Sentinel \u8bf7\u6c42\uff0c\u4ece\u800c\u83b7\u5f97\u66f4\u52a8\u6001\u7684\u90e8\u7f72\u65b9\u5f0f\u3002<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e8c\u3001\u5de5\u4f5c\u539f\u7406<\/h2>\n<p>Sentinel \u68c0\u6d4b\u5230\u4e3b\u8282\u70b9\u51fa\u73b0\u6545\u969c\u540e\uff0c\u4f1a\u7ecf\u5386\u4ee5\u4e0b\u51e0\u4e2a\u91cd\u8981\u6b65\u9aa4\uff1a<\/p>\n<ol>\n<li><strong>\u4e3b\u89c2\u4e0b\u7ebf\uff08Subjectively Down, SDOWN\uff09<\/strong>\n<ul>\n<li>\u6bcf\u4e2a Sentinel \u4f1a\u5b9a\u671f\u5411\u4e3b\u4ece\u8282\u70b9\u53d1\u9001 <code>PING<\/code> \u547d\u4ee4\u3002<\/li>\n<li>\u5982\u679c\u5728\u914d\u7f6e\u7684\u65f6\u95f4\uff08<code>down-after-milliseconds<\/code>\uff09\u5185\u6ca1\u6709\u6536\u5230\u6709\u6548\u56de\u590d\uff0c\u5219\u8be5 Sentinel \u6807\u8bb0\u6b64\u8282\u70b9\u4e3a\u201c\u4e3b\u89c2\u4e0b\u7ebf\u201d\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u89c2\u4e0b\u7ebf\uff08Objectively Down, ODOWN\uff09<\/strong>\n<ul>\n<li>\u5f53\u4e00\u4e2a Sentinel \u5c06\u4e3b\u8282\u70b9\u6807\u8bb0\u4e3a SDOWN \u540e\uff0c\u4f1a\u8be2\u95ee\u5176\u4ed6 Sentinel \u662f\u5426\u4e5f\u8ba4\u4e3a\u4e3b\u8282\u70b9\u4e0d\u53ef\u7528\u3002<\/li>\n<li>\u5982\u679c\u6709\u8db3\u591f\u591a\uff08\u8fbe\u5230 <code>quorum<\/code> \u914d\u7f6e\uff09\u7684 Sentinel \u90fd\u8ba4\u4e3a\u4e3b\u8282\u70b9\u5df2\u4e0b\u7ebf\uff0c\u5219\u5c06\u4e3b\u8282\u70b9\u6807\u8bb0\u4e3a\u201c\u5ba2\u89c2\u4e0b\u7ebf\u201d\uff0c\u786e\u5b9a\u4e3b\u8282\u70b9\u786e\u5b9e\u65e0\u6cd5\u5bf9\u5916\u670d\u52a1\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6545\u969c\u8f6c\u79fb\u9009\u4e3e<\/strong>\n<ul>\n<li>\u5728\u68c0\u6d4b\u5230\u4e3b\u8282\u70b9 ODOWN \u540e\uff0cSentinel \u4e4b\u95f4\u4f1a\u5148\u8fdb\u884c\u4e00\u6b21\u9886\u5bfc\u8005\uff08Leader\uff09\u9009\u4e3e\uff1a\u8c01\u6765\u6267\u884c\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<li>\u901a\u8fc7 Raft-like \u7684\u6295\u7968\u673a\u5236\uff08\u57fa\u4e8e\u591a\u8f6e\u6295\u7968\u3001\u914d\u7f6e\u65f6\u95f4\u9650\u5236\u7b49\uff09\uff0c\u9009\u51fa\u4e00\u4e2a Sentinel \u6210\u4e3a\u6545\u969c\u8f6c\u79fb\u7684\u6267\u884c\u8005\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u664b\u5347\u65b0\u4e3b\u8282\u70b9<\/strong>\n<ul>\n<li>\u9886\u5bfc\u8005 Sentinel \u4f1a\u4ece\u73b0\u6709\u7684\u4ece\u8282\u70b9\uff08Slave\uff09\u4e2d\u6311\u9009\u6700\u5408\u9002\u7684\u4e00\u4e2a\uff08\u8003\u8651 <code>slave-priority<\/code>\u3001\u590d\u5236\u504f\u79fb\u91cf\u3001\u5ef6\u8fdf\u3001\u6700\u8fd1\u662f\u5426\u65ad\u7ebf\u7b49\u56e0\u7d20\uff09\u664b\u5347\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\u3002<\/li>\n<li>\u664b\u5347\u5b8c\u6210\u540e\uff0cSentinel \u4f1a\u5411\u5176\u4ed6\u4ece\u8282\u70b9\u53d1\u9001\u547d\u4ee4\uff0c\u5c06\u5b83\u4eec\u7684\u590d\u5236\u76ee\u6807\u6307\u5411\u65b0\u7684\u4e3b\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u901a\u77e5\u4e0e\u66f4\u65b0<\/strong>\n<ul>\n<li>\u6545\u969c\u8f6c\u79fb\u6210\u529f\u540e\uff0cSentinel \u4f1a\u66f4\u65b0\u81ea\u8eab\u7684\u914d\u7f6e\uff0c\u5e76\u5e7f\u64ad\u65b0\u7684\u4e3b\u8282\u70b9\u4fe1\u606f\u3002<\/li>\n<li>\u5176\u4ed6\u975e\u9886\u5bfc\u8005 Sentinel \u6536\u5230\u66f4\u65b0\u4fe1\u606f\u540e\uff0c\u4e5f\u4f1a\u66f4\u65b0\u672c\u5730\u914d\u7f6e\uff1b\u5ba2\u6237\u7aef\u5982\u679c\u901a\u8fc7 Sentinel \u83b7\u53d6\u4e3b\u8282\u70b9\u4fe1\u606f\uff0c\u4e5f\u4f1a\u77e5\u9053\u65b0\u7684\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u4ece\u800c\u5b9e\u73b0\u81ea\u52a8\u5207\u6362\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8001\u4e3b\u8282\u70b9\u91cd\u65b0\u4e0a\u7ebf<\/strong>\n<ul>\n<li>\u5f53\u6545\u969c\u6062\u590d\u540e\uff0c\u539f\u4e3b\u8282\u70b9\u4f1a\u4ee5\u4ece\u8282\u70b9\uff08Slave\uff09\u8eab\u4efd\u81ea\u52a8\u52a0\u5165\u96c6\u7fa4\uff0c\u7ee7\u7eed\u5bf9\u65b0\u4e3b\u8282\u70b9\u8fdb\u884c\u590d\u5236\u3002<\/li>\n<li>\u8fd9\u6837\uff0c\u96c6\u7fa4\u53c8\u6062\u590d\u5230\u5b8c\u6574\u7684\u4e3b\u4ece\u7ed3\u6784\uff0c\u5e76\u4fdd\u6301\u9ad8\u53ef\u7528\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e09\u3001\u5178\u578b\u67b6\u6784<\/h2>\n<p>\u901a\u5e38\u5728\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u81f3\u5c11\u90e8\u7f72 3 \u4e2a Sentinel \u8282\u70b9\uff08\u5947\u6570\u4e2a\uff09\uff0c\u5947\u6570\u4e2a\u662f\u4e3a\u4e86\u9632\u6b62\u51fa\u73b0\u8111\u88c2\u73b0\u8c61,\u5206\u522b\u76d1\u63a7\u540c\u4e00\u4e2a\u4e3b\u4ece\u96c6\u7fa4\u3002\u8fd9\u6837\u53ef\u4ee5\u63d0\u9ad8\u4e00\u81f4\u6027\u548c\u5bb9\u9519\u80fd\u529b\u3002<\/p>\n<ol>\n<li><strong>\u4e3b\u4ece\u8282\u70b9\uff08Master-Slave\uff09<\/strong>\n<ul>\n<li>\u81f3\u5c11\u4e00\u4e2a\u4e3b\u8282\u70b9\uff0c\u82e5\u5e72\u4ece\u8282\u70b9\uff0c\u7528\u4e8e\u6570\u636e\u590d\u5236\u548c\u8d1f\u8f7d\u5747\u8861\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>Sentinel \u96c6\u7fa4<\/strong>\n<ul>\n<li>\u5efa\u8bae 3 \u4e2a\u6216 5 \u4e2a Sentinel\uff0c\u4fdd\u8bc1\u5728\u51fa\u73b0\u7f51\u7edc\u5206\u533a\u6216\u5355\u70b9\u6545\u969c\u65f6\u4ecd\u80fd\u505a\u51fa\u6b63\u786e\u51b3\u7b56\u5e76\u5b8c\u6210\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u5e94\u7528<\/strong>\n<ul>\n<li>\u5ba2\u6237\u7aef\u53ef\u4ee5\u914d\u7f6e\u901a\u8fc7 Sentinel \u83b7\u53d6\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u800c\u65e0\u9700\u63d0\u524d\u786c\u7f16\u7801\u4e3b\u8282\u70b9\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>\u56db\u3001\u914d\u7f6e\u8981\u70b9<\/h2>\n<blockquote>\n<p>\u8be6\u7ec6\u914d\u7f6e\u8fc7\u7a0b\u53c2\u8003\u300aRedis\u7684\u4e00\u4e3b\u4e8c\u4ece\u4e09\u54e8\u5175\u300b\u3002<\/p>\n<\/blockquote>\n<p>\u5728 <code>sentinel.conf<\/code> \u6216\u76f8\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u9700\u8981\u5b9a\u4e49\u76d1\u63a7\u7684\u4e3b\u8282\u70b9\u4fe1\u606f\uff0c\u4ee5\u53ca\u6545\u969c\u8f6c\u79fb\u7684\u4e00\u4e9b\u5173\u952e\u53c2\u6570\u3002<\/p>\n<ol>\n<li>\n<p><strong>\u76d1\u63a7\u4e3b\u8282\u70b9<\/strong><\/p>\n<pre><code class=\"language-bash\">sentinel monitor mymaster <master-ip> <master-port> <quorum><\/code><\/pre>\n<ul>\n<li><code>mymaster<\/code>\uff1a\u81ea\u5b9a\u4e49\u7684\u76d1\u63a7\u4e3b\u8282\u70b9\u540d\u79f0\u3002<\/li>\n<li><code>&lt;master-ip&gt;<\/code>\uff1a\u4e3b\u8282\u70b9 IP\u3002<\/li>\n<li><code>&lt;master-port&gt;<\/code>\uff1a\u4e3b\u8282\u70b9\u7aef\u53e3\u3002<\/li>\n<li><code>&lt;quorum&gt;<\/code>\uff1a\u5224\u65ad\u4e3b\u8282\u70b9\u5ba2\u89c2\u4e0b\u7ebf\u6240\u9700\u7684\u6700\u5c11 Sentinel \u6570\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u4e0b\u7ebf\u5224\u5b9a\u65f6\u95f4<\/strong><\/p>\n<pre><code class=\"language-bash\">sentinel down-after-milliseconds mymaster 5000<\/code><\/pre>\n<ul>\n<li>\u6307\u5b9a\u591a\u5c11\u6beb\u79d2\u5185\u672a\u6536\u5230\u6b63\u5e38\u54cd\u5e94\u540e\uff0c\u6807\u8bb0\u8be5\u4e3b\u8282\u70b9\u4e3a\u201c\u4e3b\u89c2\u4e0b\u7ebf\u201d\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u6545\u969c\u8f6c\u79fb\u8d85\u65f6<\/strong><\/p>\n<pre><code class=\"language-bash\">sentinel failover-timeout mymaster 60000<\/code><\/pre>\n<ul>\n<li>\u6307\u5b9a\u5728\u6267\u884c\u6545\u969c\u8f6c\u79fb\u65f6\uff0c\u82e5\u5728\u6b64\u65f6\u95f4\u5185\u65e0\u6cd5\u5b8c\u6210\uff0cSentinel \u4f1a\u653e\u5f03\u5f53\u524d\u6545\u969c\u8f6c\u79fb\u6d41\u7a0b\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u901a\u77e5\u811a\u672c<\/strong><\/p>\n<pre><code class=\"language-bash\">sentinel notification-script mymaster \/path\/to\/notify.sh<\/code><\/pre>\n<ul>\n<li>\u5728\u53d1\u751f\u4e3b\u8282\u70b9\u6545\u969c\u6216\u6545\u969c\u8f6c\u79fb\u65f6\uff0cSentinel \u4f1a\u8c03\u7528\u8be5\u811a\u672c\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u6545\u969c\u8f6c\u79fb\u811a\u672c<\/strong><\/p>\n<pre><code class=\"language-bash\">sentinel reconfig-script mymaster \/path\/to\/reconfig.sh<\/code><\/pre>\n<ul>\n<li>\u5728\u6267\u884c\u6545\u969c\u8f6c\u79fb\u540e\uff0c\u53ef\u8fd0\u884c\u8be5\u811a\u672c\u5b8c\u6210\u989d\u5916\u7684\u91cd\u65b0\u914d\u7f6e\u64cd\u4f5c\uff08\u5982\u66f4\u65b0\u8d1f\u8f7d\u5747\u8861\u5668\u7b49\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u624b\u52a8\u4e0b\u7ebfredis\u8282\u70b9<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">[root@Rocky9.4 ~]#redis-cli -p 26379\n127.0.0.1:26379&gt; SENTINEL FAILOVER mymaster\nOK\n127.0.0.1:26379&gt; info sentinel\n# Sentinel\nsentinel_masters:1\nsentinel_tilt:0\nsentinel_tilt_since_seconds:-1\nsentinel_running_scripts:0\nsentinel_scripts_queue_length:0\nsentinel_simulate_failure_flags:0\nmaster0:name=mymaster,status=ok,address=10.0.0.40:6379,slaves=2,sentinels=3\n\n# \u4fee\u6539slave\u4f18\u5148\u7ea7\n27.0.0.1:6379&gt; CONFIG SET replica-priority 70\nOK\n127.0.0.1:6379&gt; info replication\n# Replication\nrole:slave\nmaster_host:10.0.0.41\nmaster_port:6379\nmaster_link_status:up\nmaster_last_io_seconds_ago:0\nmaster_sync_in_progress:0\nslave_read_repl_offset:3991359\nslave_repl_offset:3991359\nslave_priority:70\n......<\/code><\/pre>\n<p>\u8be6\u7ec6\u7684\u914d\u7f6e\u53c2\u6570<\/p>\n<pre><code class=\"language-bash\"># \u4e09\u53f0\u673a\u5668\u5168\u90e8\u8fd9\u6837\u914d\u7f6e\n# \u6e90\u7801\u7f16\u8bd1\u4e0d\u4f1a\u5728\/apps\/redis\/etc\/\u4e0b\u751f\u6210sentinel.conf\u8fd9\u4e2a\u6587\u4ef6\uff0c\u9700\u8981\u4ece\u6e90\u7801\u91cc\u9762\u62f7\u8d1d\u4e00\u4efd\n[root@redis_master redis]#cp \/root\/redis-7.4.1\/sentinel.conf \/apps\/redis\/etc\/sentinel.conf\n[root@redis_master redis]#vim \/apps\/redis\/etc\/sentinel.conf\nport 26379\nbind 0.0.0.0\ndaemonize yes\npidfile &quot;\/apps\/redis\/run\/redis-sentinel.pid&quot;\nlogfile &quot;\/apps\/redis\/log\/sentinel_26379.log&quot;\ndir &quot;\/tmp&quot; # \u5de5\u4f5c\u76ee\u5f55\nsentinel monitor mymaster 10.0.0.42 6379 2 # mymaster\u662f\u5f53\u524d\u4e00\u7ec4\u4e3b\u4ece\u590d\u5236\u96c6\u7fa4\u7684\u540d\u5b57\uff0csentinel\u53ef\u4ee5\u76d1\u63a7\u591a\u7ec4 2\u4ee3\u8868\u6709\u4e24\u4e2asentinel\u8ba4\u4e3a\u5b95\u673a\u5c31\u53ef\u4ee5\u9009\u4e3e\u4e86\nsentinel auth-pass mymaster 123456 # mymaster\u96c6\u7fa4\u4e2dmaster\u7684\u5bc6\u7801\uff0c\u8fd9\u884c\u4e00\u5b9a\u5728\u4e0a\u9762\u90a3\u884c\u7684\u4e0b\u9762\nsentinel down-after-milliseconds mymaster 3000 #\u5224\u65admymaster\u96c6\u7fa4\u4e2d\u6240\u6709\u8282\u70b9\u7684\u4e3b\u89c2\u4e0b\u7ebf\u7684\u65f6\u95f4\uff0c\u5355\u4f4d\uff1a\u6beb\u79d2\uff0c\u5efa\u8bae3000\nsentinel parallel-syncs mymaster 1 #\u53d1\u751f\u6545\u969c\u8f6c\u79fb\u540e\uff0c\u540c\u65f6\u5411\u65b0\u7684master\u540c\u6b65\u6570\u636e\u7684slave\u6570\u91cf\uff0c\u6570\u5b57\u8d8a\u5c0f\u603b\u540c\u6b65\u65f6\u95f4\u8d8a\u957f\uff0c\u4f46\u53ef\u4ee5\u51cf\u8f7b\u65b0master\u7684\u8d1f\u8f7d\u538b\u529b\nsentinel failover-timeout mymaster 180000 #\u6240\u6709slave\u6307\u5411\u65b0\u7684master\u6240\u9700\u7684\u8d85\u65f6\u65f6\u95f4\uff0c\u5355\u4f4d\uff1a\u6beb\u79d2 \u4e09\u5206\u949f\nsentinel deny-scripts-reconfig yes # \u7981\u6b62\u4fee\u6539\u811a\u672c<\/code><\/pre>\n<hr \/>\n<h2>\u4e94\u3001Sentinel \u5185\u90e8\u5b9a\u65f6\u4efb\u52a1<\/h2>\n<p>\u5728 Redis Sentinel \u7684\u5185\u90e8\u5b9e\u73b0\u4e2d\uff0c\u6709\u591a\u4e2a\u5b9a\u65f6\uff08\u5468\u671f\u6027\uff09\u4efb\u52a1\u6765\u9a71\u52a8\u4e0a\u8ff0\u6d41\u7a0b\u3002\u53ef\u4ee5\u7b80\u8981\u5730\u5c06\u5176\u7406\u89e3\u4e3a\u4ee5\u4e0b\u51e0\u4e2a\u91cd\u8981\u7684\u201c\u5faa\u73af\u201d\u6216\u201cTimer\u201d\uff1a<\/p>\n<ol>\n<li><strong>\u5b9a\u65f6 PING \u68c0\u6d4b<\/strong>\n<ul>\n<li>Sentinel \u4f1a\u6309\u7167\u4e00\u5b9a\u9891\u7387\uff08\u9ed8\u8ba4 1 \u79d2\u4e00\u6b21\uff0c\u6216\u7531\u914d\u7f6e\u51b3\u5b9a\uff09\u5411\u4e3b\u8282\u70b9\u3001\u4ece\u8282\u70b9\u4ee5\u53ca\u5176\u4ed6 Sentinel \u53d1\u9001 <code>PING<\/code> \u547d\u4ee4\u3002<\/li>\n<li>\u82e5\u8282\u70b9\u5728 <code>down-after-milliseconds<\/code> \u5185\u6ca1\u6709\u54cd\u5e94\uff0c\u5219\u6807\u8bb0\u4e3a\u4e3b\u89c2\u4e0b\u7ebf\uff08SDOWN\uff09\u3002\u8fd9\u662f\u4e3b\u89c2\u4e0b\u7ebf\u4fa6\u6d4b\u7684\u6838\u5fc3\u673a\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5b9a\u65f6 INFO \u6536\u96c6<\/strong>\n<ul>\n<li>Sentinel \u4e5f\u4f1a\u5468\u671f\u6027\u5730\u5411 Redis \u8282\u70b9\u53d1\u9001 <code>INFO<\/code> \u547d\u4ee4\uff0c\u4ee5\u83b7\u53d6\u8282\u70b9\u7248\u672c\u3001\u590d\u5236\u504f\u79fb\u91cf\u3001\u89d2\u8272\uff08\u4e3b \/ \u4ece\uff09\u3001\u6240\u76d1\u63a7\u7684\u5176\u4ed6\u8282\u70b9\u4fe1\u606f\u7b49\u3002<\/li>\n<li>\u8fd9\u4e9b\u4fe1\u606f\u6709\u52a9\u4e8e\u5224\u65ad\u54ea\u4e2a\u4ece\u8282\u70b9\u6700\u9002\u5408\u88ab\u664b\u5347\u4e3a\u65b0\u4e3b\u8282\u70b9\uff08\u4f8b\u5982\u4f18\u5148\u7ea7\u3001\u590d\u5236\u504f\u79fb\u91cf\u7b49\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>Sentinel \u4e4b\u95f4\u7684 HELLO \u4fe1\u606f\u4ea4\u6362<\/strong>\n<ul>\n<li>\u4e0d\u540c Sentinel \u4e4b\u95f4\u4f1a\u901a\u8fc7\u53d1\u5e03\u8ba2\u9605\uff08<code>__sentinel__:hello<\/code> \u9891\u9053\uff09\u6765\u4ea4\u6362\u4fe1\u606f\u3002<\/li>\n<li>Sentinel \u5468\u671f\u6027\u5730\u628a\u81ea\u5df1\u76d1\u63a7\u7684\u4e3b\u4ece\u8282\u70b9\u4fe1\u606f\u53d1\u5e03\u5230\u9891\u9053\uff0c\u540c\u65f6\u4e5f\u4ece\u9891\u9053\u4e2d\u63a5\u6536\u5176\u4ed6 Sentinel \u7684\u4fe1\u606f\uff0c\u4ece\u800c\u5b9e\u73b0\u5bf9\u96c6\u7fa4\u62d3\u6251\u7684\u4e00\u81f4\u8ba4\u77e5\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u9009\u4e3e\u4e0e\u6545\u969c\u8f6c\u79fb\u72b6\u6001\u673a\u5b9a\u65f6\u68c0\u67e5<\/strong>\n<ul>\n<li>\u5f53 Sentinel \u8ba4\u4e3a\u4e3b\u8282\u70b9\u5ba2\u89c2\u4e0b\u7ebf\uff0c\u4f1a\u542f\u52a8\u6545\u969c\u8f6c\u79fb\u6d41\u7a0b\u3002<\/li>\n<li>\u8fd9\u4e00\u6d41\u7a0b\u4e5f\u662f\u901a\u8fc7\u5b9a\u65f6\u4efb\u52a1\u9010\u6b65\u63a8\u8fdb\uff08\u5982\uff1a\u53d1\u8d77\u6295\u7968-&gt;\u6536\u96c6\u7968\u6570-&gt;\u5982\u679c\u8d85\u65f6\u5219\u91cd\u8bd5-&gt;\u6210\u529f\u540e\u664b\u5347\u4ece\u8282\u70b9\uff09\uff0c\u76f4\u5230\u5b8c\u6210\u6216\u8d85\u65f6\u5931\u8d25\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u914d\u7f6e\u6587\u4ef6\u5b9a\u65f6\u4fdd\u5b58<\/strong>\n<ul>\n<li>Sentinel \u4f1a\u5728\u6545\u969c\u8f6c\u79fb\u5b8c\u6210\u540e\u6216\u914d\u7f6e\u66f4\u65b0\u540e\uff0c\u5f02\u6b65\u5730\u628a\u6700\u65b0\u72b6\u6001\u5199\u5165\u5230\u672c\u5730\u914d\u7f6e\u6587\u4ef6\uff08\u5982 <code>sentinel.conf<\/code>\uff09\uff0c\u4ee5\u9632\u6b62\u8fdb\u7a0b\u91cd\u542f\u540e\u4e22\u5931\u6700\u65b0\u7684\u62d3\u6251\u914d\u7f6e\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u8fd9\u4e9b\u5b9a\u65f6\u4efb\u52a1\u5171\u540c\u6784\u6210\u4e86 Sentinel \u7684\u201c\u611f\u77e5-\u51b3\u7b56-\u6267\u884c\u201d\u7684\u5faa\u73af\uff1a<strong>\u611f\u77e5\u8282\u70b9\u72b6\u6001\u3001\u51b3\u7b56\u662f\u5426\u9700\u8981\u6545\u969c\u8f6c\u79fb\u3001\u6267\u884c\u5207\u6362\u5e76\u901a\u77e5\u96c6\u7fa4<\/strong>\u3002<\/p>\n<h2>\u516d\u3001\u4f7f\u7528\u4e0e\u7ef4\u62a4\u5efa\u8bae<\/h2>\n<ol>\n<li><strong>\u90e8\u7f72\u5efa\u8bae<\/strong>\n<ul>\n<li>\u4e3a\u4fdd\u8bc1\u9ad8\u53ef\u7528\uff0c\u6bcf\u4e2a Sentinel \u90fd\u5e94\u8be5\u4e0e Redis \u8282\u70b9\u5206\u5e03\u5728\u4e0d\u540c\u7684\u7269\u7406\u673a\u6216\u5bb9\u5668\u4e2d\uff0c\u907f\u514d\u5355\u70b9\u6545\u969c\u6216\u7f51\u7edc\u5206\u533a\u5bf9\u53ef\u7528\u6027\u7684\u5f71\u54cd\u3002<\/li>\n<li>\u5efa\u8bae\u4f7f\u7528\u5947\u6570\u4e2a Sentinel\uff08\u81f3\u5c11 3 \u4e2a\uff09\uff0c\u9632\u6b62\u8111\u88c2\uff08split-brain\uff09\u95ee\u9898\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u6b63\u786e\u4f7f\u7528<\/strong>\n<ul>\n<li>\u63a8\u8350\u5ba2\u6237\u7aef\u76f4\u63a5\u8fde\u63a5 Sentinel \u83b7\u53d6\u4e3b\u8282\u70b9\u4fe1\u606f\uff08\u901a\u8fc7 <code>SENTINEL get-master-addr-by-name &lt;master-name&gt;<\/code>\uff09\u3002<\/li>\n<li>\u90e8\u7f72\u5e94\u7528\u65f6\u4fdd\u8bc1\u5728\u4e3b\u8282\u70b9\u5207\u6362\u540e\uff0c\u5ba2\u6237\u7aef\u53ef\u4ee5\u5c3d\u5feb\u611f\u77e5\u5230\u65b0\u7684\u4e3b\u8282\u70b9\uff0c\u5c3d\u91cf\u51cf\u5c11\u670d\u52a1\u4e2d\u65ad\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u76d1\u63a7\u53ca\u62a5\u8b66<\/strong>\n<ul>\n<li>\u65f6\u523b\u5173\u6ce8 Sentinels \u81ea\u8eab\u7684\u5065\u5eb7\u72b6\u51b5\uff1aSentinel \u4e4b\u95f4\u7684\u7f51\u7edc\u8fde\u901a\u6027\u3001\u5404\u4e2a Redis \u8282\u70b9\u7684\u5ef6\u8fdf\u60c5\u51b5\u7b49\u3002<\/li>\n<li>\u5408\u7406\u8bbe\u7f6e\u62a5\u8b66\u673a\u5236\uff08\u5982\u65e5\u5fd7\u76d1\u63a7\u3001Prometheus + Grafana \u76d1\u63a7\u7b49\uff09\uff0c\u5728\u51fa\u73b0\u544a\u8b66\u65f6\u53ca\u65f6\u6392\u67e5\u7f51\u7edc\u548c\u7cfb\u7edf\u95ee\u9898\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7248\u672c\u517c\u5bb9\u4e0e\u5347\u7ea7<\/strong>\n<ul>\n<li>\u4e0d\u540c\u7248\u672c\u7684 Redis \u53ef\u80fd\u5728 Sentinel \u529f\u80fd\u4e0a\u5b58\u5728\u5dee\u5f02\uff0c\u90e8\u7f72\u524d\u8981\u67e5\u770b\u5b98\u65b9\u6587\u6863\u786e\u8ba4\u517c\u5bb9\u6027\u3002<\/li>\n<li>\u5347\u7ea7 Redis \u6216 Sentinel \u65f6\uff0c\u8981\u5148\u5728\u6d4b\u8bd5\u73af\u5883\u6f14\u7ec3\u5e76\u505a\u597d\u56de\u6eda\u9884\u6848\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e03\u3001\u603b\u7ed3<\/h2>\n<p>Redis Sentinel \u901a\u8fc7\u6301\u7eed\u76d1\u63a7\u3001\u81ea\u52a8\u901a\u77e5\u4e0e\u6545\u969c\u8f6c\u79fb\u3001\u914d\u7f6e\u4e2d\u5fc3\u7b49\u529f\u80fd\uff0c\u5e2e\u52a9 Redis \u5728\u4e3b\u4ece\u6a21\u5f0f\u4e0b\u5b9e\u73b0\u9ad8\u53ef\u7528\u3002\u5b83\u80fd\u6700\u5c0f\u5316\u4eba\u5de5\u5e72\u9884\uff0c\u786e\u4fdd\u5f53\u4e3b\u8282\u70b9\u51fa\u73b0\u6545\u969c\u540e\uff0c\u7cfb\u7edf\u80fd\u81ea\u52a8\u5b8c\u6210\u4ece\u8282\u70b9\u664b\u5347\u3001\u96c6\u7fa4\u91cd\u65b0\u914d\u7f6e\u7b49\u5173\u952e\u6b65\u9aa4\uff0c\u4ece\u800c\u6700\u5927\u7a0b\u5ea6\u5730\u4fdd\u8bc1\u4e1a\u52a1\u7684\u8fde\u7eed\u6027\u3002\u5728\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u5408\u7406\u5730\u8fdb\u884c Sentinel \u90e8\u7f72\u3001\u914d\u5408\u4e3b\u4ece\u67b6\u6784\u53ca\u5e94\u7528\u914d\u7f6e\u7684\u4f18\u5316\uff0c\u5c06\u663e\u8457\u63d0\u5347\u6574\u4e2a Redis \u96c6\u7fa4\u7684\u53ef\u9760\u6027\u548c\u7a33\u5b9a\u6027\u3002<\/p>\n<h2>\u516b\u3001\u5ba2\u6237\u7aef\u8fde\u63a5 Sentinel \u5de5\u4f5c\u539f\u7406<\/h2>\n<blockquote>\n<p>\u5728\u4f7f\u7528 Redis Sentinel \u8fdb\u884c\u9ad8\u53ef\u7528\u90e8\u7f72\u65f6\uff0c\u5ba2\u6237\u7aef\u5e76\u4e0d\u662f\u76f4\u63a5\u53bb\u201c\u731c\u201d\u4e3b\u8282\u70b9\uff08master\uff09\u7684\u5730\u5740\uff0c\u4e5f\u4e0d\u4f1a\u76f4\u63a5\u540c\u65f6\u8fde\u6240\u6709\u4ece\u8282\u70b9\uff08replica\uff09\u6765\u5224\u65ad\u8c01\u662f\u4e3b\u8282\u70b9\uff0c\u800c\u662f\u901a\u8fc7\u5411 Sentinel \u67e5\u8be2\u5f53\u524d\u53ef\u7528\u7684\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u518d\u53bb\u8fde\u63a5\u8be5\u4e3b\u8282\u70b9\u8fdb\u884c\u8bfb\u5199\u64cd\u4f5c\u3002\u5176\u6838\u5fc3\u601d\u60f3\u662f\u201c\u5ba2\u6237\u7aef\u5c06\u4e3b\u8282\u70b9\u53d1\u73b0\u548c\u6545\u969c\u8f6c\u79fb\u903b\u8f91\u4ea4\u7ed9 Sentinel \u53bb\u505a\u201d\uff0c\u5ba2\u6237\u7aef\u53ea\u9700\u8981\u5728\u521d\u59cb\u5316\u65f6\u77e5\u9053\u4e00\u7ec4 Sentinel \u7684\u5730\u5740\uff0c\u5c31\u80fd\u5728\u4e3b\u8282\u70b9\u53d1\u751f\u53d8\u5316\u65f6\u81ea\u52a8\u611f\u77e5\u5e76\u5207\u6362\u5230\u65b0\u7684\u4e3b\u8282\u70b9\u3002<\/p>\n<\/blockquote>\n<h3>1. \u6574\u4f53\u6d41\u7a0b\u6982\u89c8<\/h3>\n<ol>\n<li><strong>\u5ba2\u6237\u7aef\u521d\u59cb\u5316\uff1a<\/strong><br \/>\n\u5ba2\u6237\u7aef\u4f1a\u88ab\u914d\u7f6e\u597d\u4e00\u4e2a\u6216\u591a\u4e2a Sentinel \u7684\u5730\u5740\u5217\u8868\uff08IP:PORT\uff09\uff0c\u4ee5\u53ca\u4e00\u4e2a\u4ee3\u8868\u201c\u4e3b\u8282\u70b9\u540d\u79f0\u201d\uff08masterName\uff09\u7684\u6807\u8bc6\u3002<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u5411 Sentinel \u67e5\u8be2\u5f53\u524d\u4e3b\u8282\u70b9\uff1a<\/strong><br \/>\n\u5ba2\u6237\u7aef\u5411 Sentinel \u53d1\u9001\u547d\u4ee4\uff08\u4f8b\u5982 <code>SENTINEL get-master-addr-by-name &lt;masterName&gt;<\/code>\uff09\uff0c\u83b7\u53d6\u5230\u5f53\u524d\u4e3b\u8282\u70b9\u7684 IP \u548c\u7aef\u53e3\u3002<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u8fde\u63a5 Redis \u4e3b\u8282\u70b9\uff1a<\/strong><br \/>\n\u5ba2\u6237\u7aef\u6839\u636e\u4e0a\u4e00\u6b65\u8fd4\u56de\u7684 IP \u548c\u7aef\u53e3\uff0c\u5efa\u7acb\u4e0e\u5f53\u524d\u4e3b\u8282\u70b9\u7684\u8fde\u63a5\uff0c\u7528\u4e8e\u8bfb\u5199\u64cd\u4f5c\u3002<\/li>\n<li><strong>Sentinel \u76d1\u63a7\u548c\u6545\u969c\u8f6c\u79fb\uff1a<\/strong>\n<ul>\n<li>Sentinel \u5728\u540e\u53f0\u6301\u7eed\u76d1\u63a7 Redis \u4e3b\u4ece\u8282\u70b9\u7684\u5065\u5eb7\u72b6\u51b5\u3002\u5982\u679c\u4e3b\u8282\u70b9\u4e0d\u53ef\u7528\uff0cSentinel \u9009\u4e3e\u51fa\u4e00\u4e2a\u4ece\u8282\u70b9\u664b\u5347\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\uff0c\u5e76\u66f4\u65b0\u5185\u90e8\u914d\u7f6e\u4fe1\u606f\u3002<\/li>\n<li>Sentinel \u4f1a\u5bf9\u5916\u66b4\u9732\u65b0\u7684\u4e3b\u8282\u70b9\u4fe1\u606f\uff0c\u5ba2\u6237\u7aef\u518d\u6b21\u901a\u8fc7 Sentinel \u67e5\u8be2\uff08\u6216\u5728\u8fde\u63a5\u5f02\u5e38\u65f6\u91cd\u65b0\u67e5\u8be2\uff09\uff0c\u5c31\u80fd\u62ff\u5230\u65b0\u4e3b\u8282\u70b9\u7684\u5730\u5740\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u91cd\u65b0\u8fde\u63a5\uff1a<\/strong><br \/>\n\u5982\u679c\u5ba2\u6237\u7aef\u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u539f\u4e3b\u8282\u70b9\u65ad\u5f00\uff08\u7f51\u7edc\u5f02\u5e38\u3001\u8d85\u65f6\u7b49\uff09\uff0c\u4f1a\u518d\u53bb\u8be2\u95ee Sentinel \u6700\u65b0\u7684\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u4ece\u800c\u4e0e\u65b0\u4e3b\u8282\u70b9\u5efa\u7acb\u8fde\u63a5\uff0c\u5b9e\u73b0\u6545\u969c\u6062\u590d\u548c\u9ad8\u53ef\u7528\u3002<\/li>\n<\/ol>\n<p>\u901a\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0cRedis \u96c6\u7fa4\u5728\u540e\u7aef\u5b8c\u6210\u4e86\u4e3b\u4ece\u5207\u6362\u548c\u6545\u969c\u8f6c\u79fb\uff0c\u800c\u5ba2\u6237\u7aef\u53ea\u9700\u8981\u786e\u4fdd\u80fd\u8bbf\u95ee\u81f3\u5c11\u4e00\u4e2a\u5b58\u6d3b\u7684 Sentinel\uff0c\u5c31\u53ef\u4ee5\u62ff\u5230\u6700\u65b0\u7684\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u4ece\u800c\u65e0\u9700\u5173\u5fc3\u540e\u7aef\u8282\u70b9\u7684\u5b9e\u9645\u53d8\u5316\u3002<\/p>\n<hr \/>\n<h3>2. \u5de5\u4f5c\u539f\u7406\u4e0e\u5173\u952e\u673a\u5236<\/h3>\n<ol>\n<li><strong>Sentinel \u7684\u76d1\u63a7\u673a\u5236\uff1a<\/strong>\n<ul>\n<li>\u6bcf\u4e2a Sentinel \u8282\u70b9\u90fd\u4f1a\u4e0e\u4e3b\u4ece\u8282\u70b9\uff08\u4ee5\u53ca\u5176\u4ed6 Sentinel\uff09\u5b9a\u671f\u8fdb\u884c PING \u901a\u4fe1\uff0c\u7528\u4e8e\u786e\u8ba4\u8282\u70b9\u662f\u5426\u5b58\u6d3b\uff1b<\/li>\n<li>\u5f53 Sentinel \u5224\u65ad\u4e3b\u8282\u70b9\u4e0b\u7ebf\uff08\u4e3b\u89c2\u4e0b\u7ebf + \u5ba2\u89c2\u4e0b\u7ebf\uff09\uff0c\u4fbf\u4f1a\u53d1\u8d77\u6545\u969c\u8f6c\u79fb\u6d41\u7a0b\uff1b<\/li>\n<li>\u591a\u4e2a Sentinel \u901a\u8fc7 Raft \u6216\u8005\u201c\u5206\u5e03\u5f0f\u9009\u4e3e\u534f\u8bae\u201d\u7c7b\u4f3c\u7684\u65b9\u5f0f\uff0c\u534f\u5546\u5e76\u6700\u7ec8\u786e\u5b9a\u4e00\u4e2a\u4ece\u8282\u70b9\u4f5c\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u4e0e Sentinel \u7684\u4ea4\u4e92\u65b9\u5f0f\uff1a<\/strong>\n<ul>\n<li>\u5f53\u5ba2\u6237\u7aef\u542f\u52a8\u65f6\uff0c\u901a\u5e38\u4f1a\u4f7f\u7528\u67d0\u4e9b\u9ad8\u5c42\u6b21\u7684\u5ba2\u6237\u7aef\u5e93\u6216\u8fde\u63a5\u6c60\uff08\u5982 JedisSentinelPool\u3001Lettuce Sentinel\u3001redisson-spring-boot-starter \u7b49\uff09\u3002\u8fd9\u4e9b\u5e93\u5b9e\u73b0\u4e86\u4e0e Sentinel \u901a\u4fe1\u7684\u903b\u8f91\uff1a\n<ol>\n<li>\u9010\u4e2a\u5c1d\u8bd5\u8fde\u63a5\u914d\u7f6e\u5217\u8868\u4e2d\u7684 Sentinel\uff1b<\/li>\n<li>\u5411 Sentinel \u53d1\u9001\u201c\u83b7\u53d6\u4e3b\u8282\u70b9\u5730\u5740\u201d\u7684\u547d\u4ee4\uff1b<\/li>\n<li>\u6536\u5230 Sentinel \u8fd4\u56de\u7684 (IP, PORT) \u540e\uff0c\u5efa\u7acb\u4e0e\u8be5 IP:PORT \u7684 Redis \u8fde\u63a5\u3002<\/li>\n<\/ol>\n<\/li>\n<li>\u5728\u6b63\u5e38\u8bfb\u5199\u8fc7\u7a0b\u4e2d\uff0c\u5ba2\u6237\u7aef\u5e76\u4e0d\u6301\u7eed\u4e0e Sentinel \u4fdd\u6301\u6570\u636e\u64cd\u4f5c\u4e0a\u7684\u4ea4\u4e92\uff0c\u53ea\u5728\u8fde\u63a5\u521b\u5efa\u6216\u91cd\u8fde\u65f6\u624d\u518d\u6b21\u8be2\u95ee Sentinel\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6545\u969c\u8f6c\u79fb\u4e0e\u4e3b\u8282\u70b9\u66f4\u65b0\uff1a<\/strong>\n<ul>\n<li>\u4e00\u65e6\u4e3b\u8282\u70b9\u53d1\u751f\u6545\u969c\uff0cSentinel \u901a\u8fc7\u6295\u7968\u548c\u9009\u4e3e\u673a\u5236\u5207\u6362\u65b0\u7684\u4e3b\u8282\u70b9\uff1b<\/li>\n<li>Sentinel \u5185\u90e8\u4f1a\u66f4\u65b0\u81ea\u5df1\u7ba1\u7406\u7684\u201c\u4e3b\u8282\u70b9\u4fe1\u606f\u201d\uff1b<\/li>\n<li>\u5ba2\u6237\u7aef\u5982\u679c\u548c\u539f\u4e3b\u8282\u70b9\u65ad\u5f00\u6216\u68c0\u6d4b\u5230\u5f02\u5e38\uff0c\u4f1a\u91cd\u65b0\u8be2\u95ee Sentinel\uff0c\u62ff\u5230\u65b0\u7684\u4e3b\u8282\u70b9\u5730\u5740\u5e76\u8fde\u63a5\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>Sentinel \u7684\u9ad8\u53ef\u7528\uff1a<\/strong>\n<ul>\n<li>\u751f\u4ea7\u73af\u5883\u4e2d\u5f80\u5f80\u4f1a\u90e8\u7f72\u82e5\u5e72\u4e2a Sentinel \u8fdb\u7a0b\uff08\u4e00\u822c\u5efa\u8bae\u81f3\u5c11 3 \u4e2a\uff09\uff0c\u76f8\u4e92\u4e4b\u95f4\u534f\u540c\u76d1\u63a7\uff0c\u907f\u514d\u5355\u70b9\u6545\u969c\uff1b<\/li>\n<li>\u53ea\u8981\u5ba2\u6237\u7aef\u80fd\u591f\u8fde\u4e0a\u4efb\u610f\u5b58\u6d3b\u7684 Sentinel\uff0c\u5c31\u80fd\u5f97\u5230\u6700\u65b0\u4e3b\u8282\u70b9\u7684\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8bfb\u5199\u5206\u79bb\uff08\u53ef\u9009\uff09<\/strong>\n<ul>\n<li>\u6709\u4e9b\u5ba2\u6237\u7aef\u6216\u6846\u67b6\uff08\u4f8b\u5982 Redisson\u3001\u4e00\u4e9b\u81ea\u5b9a\u4e49\u7684\u5206\u5e03\u5f0f\u7f13\u5b58\u4e2d\u95f4\u4ef6\uff09\u652f\u6301\u6839\u636e\u573a\u666f\u9009\u62e9\u8bfb\u4ece\u8282\u70b9\u6216\u5199\u4e3b\u8282\u70b9\uff1b<\/li>\n<li>\u4f46 Sentinel \u9ed8\u8ba4\u53ea\u4f1a\u5411\u5ba2\u6237\u7aef\u8fd4\u56de\u4e3b\u8282\u70b9\u5730\u5740\uff08\u7528\u4e8e\u5199\u5165\uff09\uff0c\u4ece\u8282\u70b9\u4e3b\u8981\u7528\u4e8e\u5197\u4f59\u6216\u53ea\u8bfb\u573a\u666f\u3002<\/li>\n<li>\u5982\u679c\u9700\u8981\u8bfb\u5199\u5206\u79bb\uff0c\u901a\u5e38\u4e5f\u9700\u8981\u5ba2\u6237\u7aef\u81ea\u884c\u6216\u4f7f\u7528\u7279\u5b9a\u7684\u4ee3\u7406\u5c42\u6765\u7ba1\u7406\u4ece\u8282\u70b9\u8fde\u63a5\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h3>3. \u603b\u7ed3<\/h3>\n<p><strong>Redis Sentinel + \u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u5de5\u4f5c\u539f\u7406<\/strong>\u53ef\u4ee5\u6982\u62ec\u4e3a\uff1a<\/p>\n<ol>\n<li><strong>\u5ba2\u6237\u7aef\u53ea\u5173\u6ce8 Sentinel\uff0c\u5411\u5176\u7d22\u53d6\u4e3b\u8282\u70b9\u5730\u5740<\/strong>\uff1b<\/li>\n<li><strong>Sentinel \u8d1f\u8d23\u76d1\u63a7 Redis \u4e3b\u4ece\u62d3\u6251\u5e76\u5728\u6545\u969c\u65f6\u8fdb\u884c\u81ea\u52a8\u5316\u7684\u4e3b\u4ece\u5207\u6362<\/strong>\uff1b<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u5728\u8fde\u63a5\u6216\u53d1\u751f\u5f02\u5e38\u65f6\uff0c\u901a\u8fc7 Sentinel \u7684\u4fe1\u606f\u83b7\u53d6\u65b0\u7684\u4e3b\u8282\u70b9\u5730\u5740\u5e76\u81ea\u52a8\u91cd\u8fde<\/strong>\u3002<\/li>\n<\/ol>\n<p>\u8fd9\u79cd\u6a21\u5f0f\u907f\u514d\u4e86\u5ba2\u6237\u7aef\u81ea\u5df1\u53bb\u5224\u65ad\u54ea\u4e2a Redis \u8282\u70b9\u662f\u4e3b\u8282\u70b9\uff0c\u4e5f\u4e0d\u9700\u8981\u5728\u5ba2\u6237\u7aef\u914d\u7f6e\u4e2d\u786c\u7f16\u7801\u4e3b\u8282\u70b9\u7684 IP\/\u7aef\u53e3\uff0c\u4ece\u800c\u6781\u5927\u7b80\u5316\u4e86\u8fd0\u7ef4\u548c\u6545\u969c\u8f6c\u79fb\u7684\u6d41\u7a0b\uff0c\u63d0\u9ad8\u4e86\u7cfb\u7edf\u6574\u4f53\u7684\u9ad8\u53ef\u7528\u6027\u3002<\/p>\n<p>\u4e0b\u9762\u7684\u5185\u5bb9\u5c06\u4e3a\u4f60\u4ecb\u7ecd <strong>Redis Cluster<\/strong> \u7684\u5b9e\u73b0\u539f\u7406\uff0c\u5e76\u5bf9 <strong>Redis Cluster<\/strong> \u4e0e <strong>Sentinel<\/strong> \u5728\u67b6\u6784\u8bbe\u8ba1\u548c\u4f7f\u7528\u573a\u666f\u4e0a\u7684\u5dee\u5f02\u8fdb\u884c\u8bf4\u660e\u3002<\/p>\n<hr \/>\n<h1>10.Redis Cluster<\/h1>\n<h2>Redis Cluster \u6982\u8ff0<\/h2>\n<p>Redis Cluster \u662f Redis \u5b98\u65b9\u63d0\u4f9b\u7684\u5206\u5e03\u5f0f\u89e3\u51b3\u65b9\u6848\uff0c\u80fd\u591f\u5728\u591a\u53f0 Redis \u8282\u70b9\u4e4b\u95f4\u5b9e\u73b0\u6570\u636e\u5206\u7247\uff08Sharding\uff09\u548c\u6545\u969c\u81ea\u52a8\u8f6c\u79fb\uff08Failover\uff09\uff0c\u4ece\u800c\u5728\u9ad8\u53ef\u7528\u6027\u548c\u53ef\u4f38\u7f29\u6027\u65b9\u9762\u4e3a Redis \u63d0\u4f9b\u652f\u6301\u3002\u4e0e\u4f20\u7edf\u7684\u4e3b\u4ece\u590d\u5236\u6a21\u5f0f\u76f8\u6bd4\uff0cRedis Cluster \u5728\u9762\u5bf9\u4e1a\u52a1\u5feb\u901f\u589e\u957f\u3001\u6570\u636e\u91cf\u66b4\u589e\u3001\u670d\u52a1\u9ad8\u53ef\u7528\u9700\u6c42\u7b49\u573a\u666f\u65f6\u66f4\u5177\u4f18\u52bf\u3002<\/p>\n<h2>\u4e00\u3001Redis Cluster \u5b9e\u73b0\u539f\u7406<\/h2>\n<p><strong>Redis Cluster<\/strong> \u662f Redis \u63d0\u4f9b\u7684\u5206\u5e03\u5f0f\u89e3\u51b3\u65b9\u6848\uff0c\u65e8\u5728\u89e3\u51b3\u5355\u673a Redis \u5728\u6570\u636e\u91cf\u3001\u5e76\u53d1\u91cf\u548c\u9ad8\u53ef\u7528\u65b9\u9762\u7684\u74f6\u9888\u3002\u5b83\u53ef\u4ee5\u5728\u591a\u53f0\u670d\u52a1\u5668\u4e4b\u95f4\u8fdb\u884c\u6570\u636e\u5206\u7247\uff08sharding\uff09\uff0c\u5e76\u63d0\u4f9b\u4e00\u5b9a\u7a0b\u5ea6\u7684\u6545\u969c\u8f6c\u79fb\u80fd\u529b\u3002<\/p>\n<h3>1. \u6838\u5fc3\u7279\u6027<\/h3>\n<ol>\n<li><strong>\u6570\u636e\u5206\u7247\uff08Sharding\uff09\uff1a<\/strong><br \/>\nRedis Cluster \u5c06\u6574\u4e2a key \u7a7a\u95f4\u5212\u5206\u4e3a 16384 \u4e2a\u54c8\u5e0c\u69fd\uff08hash slot\uff0c\u8303\u56f4\u4e3a 0~16383\uff09\u3002\u6bcf\u4e2a\u8282\u70b9\u53ef\u5206\u914d\u5230\u82e5\u5e72\u69fd\uff0c\u5e76\u8d1f\u8d23\u5b58\u50a8\u8be5\u69fd\u5185\u7684\u6240\u6709\u6570\u636e\u3002\u5ba2\u6237\u7aef\u8bbf\u95ee\u67d0\u4e2a key \u65f6\uff0c\u901a\u8fc7\u5bf9 key \u8fdb\u884c CRC16 \u8fd0\u7b97\u5e76\u5bf9 16384 \u53d6\u6a21\u6765\u5b9a\u4f4d\u8be5 key \u6240\u5728\u7684\u69fd\u4f4d\uff0c\u7136\u540e\u76f4\u63a5\u8bf7\u6c42\u5bf9\u5e94\u8282\u70b9\u3002<\/li>\n<li><strong>\u9ad8\u53ef\u7528\uff08Replica\uff09\uff1a<\/strong>\n<ul>\n<li>Redis Cluster \u901a\u8fc7\u4e3a\u6bcf\u4e2a\u4e3b\u8282\u70b9\uff08master\uff09\u914d\u7f6e\u4e00\u4e2a\u6216\u591a\u4e2a\u4ece\u8282\u70b9\uff08replica\uff09\u6765\u8fdb\u884c\u5197\u4f59\u5907\u4efd\u63d0\u9ad8\u53ef\u7528\u6027\u3002<\/li>\n<li>\u5f53\u67d0\u4e2a\u4e3b\u8282\u70b9\u5931\u6548\u65f6\uff0c\u5176\u4ece\u8282\u70b9\u4f1a\u88ab\u81ea\u52a8\u63d0\u5347\u4e3a\u4e3b\u8282\u70b9\uff08Failover\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u65e0\u4e2d\u5fc3\u8282\u70b9\uff1a<\/strong><br \/>\nRedis Cluster \u6ca1\u6709\u4e13\u95e8\u7684\u4e2d\u5fc3\u63a7\u5236\u8282\u70b9\uff0c\u96c6\u7fa4\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u65e2\u5b58\u50a8\u6570\u636e\u53c8\u4fdd\u5b58\u96c6\u7fa4\u4fe1\u606f\uff0c\u8282\u70b9\u4e4b\u95f4\u901a\u8fc7 Gossip \u534f\u8bae\uff08\u6d88\u606f\u4ea4\u6362\u534f\u8bae\uff09\u5b9a\u671f\u4e0e\u5176\u4ed6\u8282\u70b9\u901a\u4fe1\u4ee5\u4fdd\u6301\u62d3\u6251\u66f4\u65b0\u3002\u96c6\u7fa4\u4e2d\u4e0d\u5b58\u5728\u5355\u70b9\u6545\u969c\u7684\u201c\u4e2d\u5fc3\u201d\u8282\u70b9\uff0c\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u63d0\u5347\u4e86\u7cfb\u7edf\u7684\u5065\u58ee\u6027\u3002<\/li>\n<li><strong>Gossip \u534f\u8bae &amp; \u5fc3\u8df3\u68c0\u6d4b\uff1a<\/strong>\n<ul>\n<li>\u6bcf\u4e2a\u8282\u70b9\u5468\u671f\u6027\u5411\u5176\u4ed6\u8282\u70b9\u53d1\u9001 PING \u6d88\u606f\u5e76\u7b49\u5f85\u56de\u590d\uff08PONG\uff09\uff0c\u901a\u8fc7\u8d85\u65f6\u5224\u5b9a\u4e00\u4e2a\u8282\u70b9\u662f\u5426\u4e0b\u7ebf\u3002<\/li>\n<li>\u5927\u591a\u6570\u4e3b\u8282\u70b9\uff08master\uff09\u540c\u610f\u67d0\u8282\u70b9\u4e0b\u7ebf\uff0c\u624d\u80fd\u6807\u8bb0\u8be5\u8282\u70b9\u4e3a FAIL \u72b6\u6001\u5e76\u8fdb\u884c\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u91cd\u5b9a\u5411<\/strong>\n<ul>\n<li>\u82e5\u5ba2\u6237\u7aef\u8bbf\u95ee\u4e86\u9519\u8bef\u7684\u69fd\u4f4d\uff0c\u96c6\u7fa4\u8282\u70b9\u4f1a\u8fd4\u56de <code>MOVED<\/code> \u6216 <code>ASK<\/code> \u91cd\u5b9a\u5411\u4fe1\u606f\uff0c\u544a\u8bc9\u5ba2\u6237\u7aef\u6b63\u786e\u7684\u8282\u70b9\u5730\u5740\u3002<\/li>\n<li>\u8fd9\u6837\u5ba2\u6237\u7aef\u53ef\u4ee5\u81ea\u52a8\u91cd\u8bd5\uff0c\u5c06\u8bf7\u6c42\u53d1\u5f80\u6b63\u786e\u7684\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u8bfb\u5199\u62c6\u5206<\/strong><br \/>\n\u5728 Redis Cluster \u4e2d\uff0c\u5ba2\u6237\u7aef\u7684\u5199\u8bf7\u6c42\u4f1a\u81ea\u52a8\u53d1\u9001\u5230\u76ee\u6807\u4e3b\u8282\u70b9\uff0c\u800c\u8bfb\u8bf7\u6c42\u5219\u53ef\u4ee5\u901a\u8fc7\u5ba2\u6237\u7aef\u81ea\u884c\u914d\u7f6e\u6765\u4ece\u4ece\u8282\u70b9\u8fdb\u884c\u8bfb\u53d6\uff0c\u4ece\u800c\u51cf\u8f7b\u4e3b\u8282\u70b9\u538b\u529b\uff0c\u63d0\u9ad8\u6574\u4f53\u7684\u8bfb\u541e\u5410\u91cf\u3002<\/li>\n<li><strong>\u7ebf\u6027\u6269\u5c55<\/strong><br \/>\nRedis Cluster \u901a\u8fc7\u7b80\u5355\u5730\u589e\u52a0\u6216\u51cf\u5c11\u8282\u70b9\uff0c\u5e76\u5bf9\u96c6\u7fa4\u4e2d\u7684\u54c8\u5e0c\u69fd\u91cd\u65b0\u5206\u914d\uff08Rebalance\uff09\u6765\u5b9e\u73b0\u6269\u5c55\u3002\u4e0e\u5355\u8282\u70b9\u6216\u8005\u7b80\u5355\u4e3b\u4ece\u590d\u5236\u65b9\u5f0f\u76f8\u6bd4\uff0cRedis Cluster \u53ef\u4ee5\u66f4\u6709\u6548\u5730\u5229\u7528\u591a\u673a\u8d44\u6e90\uff0c\u4ece\u800c\u63d0\u9ad8\u541e\u5410\u91cf\u548c\u5b58\u50a8\u5bb9\u91cf\u3002<\/li>\n<\/ol>\n<h3>2. Redis Cluster \u7684\u67b6\u6784<\/h3>\n<p>\u4e00\u822c\u6765\u8bf4\uff0c\u4e00\u4e2a Redis Cluster \u81f3\u5c11\u9700\u8981 <strong>3 \u4e2a\u4e3b\u8282\u70b9<\/strong> \u6765\u5b8c\u6210\u57fa\u672c\u7684\u6545\u969c\u81ea\u52a8\u8f6c\u79fb\u3002\u6b64\u5916\uff0c\u4e3a\u4e86\u4fdd\u8bc1\u9ad8\u53ef\u7528\uff0c\u6bcf\u4e2a\u4e3b\u8282\u70b9\u53ef\u914d\u7f6e\u4e00\u4e2a\u6216\u591a\u4e2a\u4ece\u8282\u70b9\u3002\u5982\u4e0b\u662f\u4e00\u4e2a\u793a\u4f8b\u62d3\u6251\u7ed3\u6784\uff1a<\/p>\n<pre><code>      +---------+    +---------+    +---------+\n      | Master1 |    | Master2 |    | Master3 |\n      |  Slot   |    |  Slot   |    |  Slot   |\n      | 0-5460  |    | 5461-10922 | | 10923-16383 |\n      +----+----+    +----+----+    +----+----+\n           |              |              |\n          +v+            +v+            +v+\n          |R|            |R|            |R|\n         Slave1         Slave2         Slave3\n<\/code><\/pre>\n<ul>\n<li>\n<p><strong>\u4e3b\u8282\u70b9\uff08Master\uff09<\/strong>\uff1a\u5b58\u50a8\u5e76\u7ba1\u7406\u54c8\u5e0c\u69fd\u7684\u6570\u636e\uff0c\u54cd\u5e94\u5ba2\u6237\u7aef\u7684\u8bfb\u5199\u8bf7\u6c42\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4ece\u8282\u70b9\uff08Slave\uff09<\/strong>\uff1a\u590d\u5236\u4e3b\u8282\u70b9\u7684\u6570\u636e\u3002\u5f53\u4e3b\u8282\u70b9\u53d1\u751f\u6545\u969c\u65f6\uff0c\u4ece\u8282\u70b9\u4f1a\u81ea\u52a8\u5347\u7ea7\u4e3a\u4e3b\u8282\u70b9\u3002<\/p>\n<\/li>\n<li>\n<p><strong>Gossip \u534f\u8bae<\/strong>\uff1a\u96c6\u7fa4\u8282\u70b9\u4e4b\u95f4\u901a\u8fc7 Gossip \u534f\u8bae\u4ea4\u6362\u5f7c\u6b64\u7684\u5fc3\u8df3\u548c\u69fd\u4f4d\u5206\u914d\u7b49\u4fe1\u606f\uff0c\u786e\u4fdd\u96c6\u7fa4\u62d3\u6251\u7684\u4e00\u81f4\u6027\u3002<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\u4e8c\u3001Redis Cluster \u7684\u6570\u636e\u5206\u7247\u673a\u5236<\/h2>\n<p>Redis Cluster \u4f7f\u7528\u9884\u5148\u5b9a\u4e49\u597d\u7684 <strong>16384 \u4e2a\u54c8\u5e0c\u69fd<\/strong> \u6765\u8fdb\u884c\u6570\u636e\u5206\u7247\u3002<\/p>\n<ol>\n<li>\u5f53\u5ba2\u6237\u7aef\u6267\u884c <code>SET key value<\/code> \u7b49\u547d\u4ee4\u65f6\uff0cRedis \u4f1a\u5148\u5bf9 <code>key<\/code> \u8fdb\u884c CRC16 \u8fd0\u7b97\uff0c\u7136\u540e\u518d\u5c06\u7ed3\u679c\u5bf9 16384 \u53d6\u6a21\uff0c\u5f97\u5230\u5bf9\u5e94\u7684\u54c8\u5e0c\u69fd\u53f7\uff08\u69fd ID\uff09\u3002<\/li>\n<li>Redis \u51b3\u5b9a\u54ea\u4e2a\u8282\u70b9\u8d1f\u8d23\u7ba1\u7406\u8fd9\u4e9b\u54c8\u5e0c\u69fd\uff0c\u8fdb\u800c\u51b3\u5b9a\u6570\u636e\u5b58\u653e\u5728\u54ea\u4e2a\u8282\u70b9\u4e0a\u3002<\/li>\n<li>\u5f53\u9700\u8981\u8fdb\u884c\u96c6\u7fa4\u6269\u5bb9\u6216\u7f29\u5bb9\u65f6\uff0c\u53ef\u901a\u8fc7 <code>redis-cli<\/code> \u547d\u4ee4\u5bf9\u54c8\u5e0c\u69fd\u8fdb\u884c\u91cd\u65b0\u5206\u914d\uff08Rebalance\uff09\uff0c\u5c3d\u91cf\u5e73\u8861\u5404\u4e2a\u8282\u70b9\u7684\u8d1f\u8f7d\u3002<\/li>\n<\/ol>\n<p>\u793a\u610f\uff1a<\/p>\n<pre><code class=\"language-scss\">CRC16(key) % 16384 --&gt; slot_id\nslot_id \u7531\u54ea\u4e2a\u8282\u70b9\u8d1f\u8d23<\/code><\/pre>\n<h2>\u56db\u3001Redis Cluster \u7684\u9ad8\u53ef\u7528\u673a\u5236<\/h2>\n<ol>\n<li><strong>\u4e3b\u4ece\u590d\u5236\uff08Master-Replica Replication\uff09<\/strong><br \/>\n\u5f53\u67d0\u4e2a\u4e3b\u8282\u70b9\u4e0d\u53ef\u7528\u65f6\uff0c\u5bf9\u5e94\u7684\u4ece\u8282\u70b9\u4f1a\u5728\u5b8c\u6210\u4e00\u5b9a\u6761\u4ef6\u548c\u96c6\u7fa4\u6295\u7968\u540e\u81ea\u52a8\u5347\u7ea7\u4e3a\u4e3b\u8282\u70b9\uff0c\u5b9e\u73b0\u6545\u969c\u8f6c\u79fb\u3002<\/li>\n<li><strong>\u6545\u969c\u68c0\u6d4b\uff08Failure Detection\uff09<\/strong>\n<ul>\n<li><strong>PFAIL\uff08\u4e3b\u89c2\u4e0b\u7ebf\uff09<\/strong>\uff1a\u82e5\u8282\u70b9 A \u5728 <code>cluster_node_timeout<\/code> \u65f6\u95f4\u5185\u6ca1\u6709\u6536\u5230\u8282\u70b9 B \u7684\u6b63\u786e\u56de\u590d\uff0c\u8282\u70b9 A \u4f1a\u5c06 B \u6807\u8bb0\u4e3a\u4e3b\u89c2\u4e0b\u7ebf\uff08PFAIL\uff09\u3002<\/li>\n<li><strong>FAIL\uff08\u5ba2\u89c2\u4e0b\u7ebf\uff09<\/strong>\uff1a\u82e5\u591a\u6570\u8282\u70b9\uff08\u5305\u62ec A\uff09\u90fd\u8ba4\u4e3a B \u4e0b\u7ebf\uff0c\u5219\u4f1a\u5c06 B \u6807\u8bb0\u4e3a\u5ba2\u89c2\u4e0b\u7ebf\uff08FAIL\uff09\u3002\u6b64\u65f6\u4fbf\u4f1a\u89e6\u53d1\u6545\u969c\u8f6c\u79fb\u6d41\u7a0b\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6545\u969c\u8f6c\u79fb\uff08Failover\uff09<\/strong><br \/>\n\u5f53\u4e00\u4e2a\u4e3b\u8282\u70b9\u88ab\u5ba2\u89c2\u4e0b\u7ebf\u540e\uff0c\u96c6\u7fa4\u4f1a\u53d1\u8d77\u9009\u4e3e\uff0c\u7b49\u5f85\u7b26\u5408\u6761\u4ef6\u7684\u4ece\u8282\u70b9\u6210\u4e3a\u65b0\u7684\u4e3b\u8282\u70b9\u3002\u65b0\u7684\u4e3b\u8282\u70b9\u63a5\u7ba1\u539f\u4e3b\u8282\u70b9\u7684\u54c8\u5e0c\u69fd\uff0c\u5e76\u6062\u590d\u5bf9\u5916\u63d0\u4f9b\u8bfb\u5199\u670d\u52a1\u3002<\/li>\n<\/ol>\n<h2>\u4e8c\u3001Redis Sentinel \u539f\u7406<\/h2>\n<p><strong>Redis Sentinel<\/strong> \u662f\u9488\u5bf9 Redis \u7684\u9ad8\u53ef\u7528\u76d1\u63a7\u4e0e\u81ea\u52a8\u6545\u969c\u8f6c\u79fb\u5de5\u5177\uff0c\u66f4\u5e38\u7528\u4e8e<strong>\u5355\u4e3b\u591a\u4ece<\/strong>\u67b6\u6784\u3002\u5b83\u672c\u8eab\u5e76\u4e0d\u63d0\u4f9b\u6570\u636e\u5206\u7247\u80fd\u529b\uff0c\u800c\u662f\u4fa7\u91cd\u76d1\u63a7\u548c\u6545\u969c\u8f6c\u79fb\u3002<\/p>\n<ol>\n<li><strong>\u76d1\u63a7\u4e3b\u4ece\u67b6\u6784\uff1a<\/strong><br \/>\nSentinel \u4e0d\u65ad\u5730 PING \u4e3b\u8282\u70b9\u3001\u4ece\u8282\u70b9\u4ee5\u53ca\u5176\u4ed6 Sentinel\uff0c\u4ee5\u68c0\u6d4b\u8282\u70b9\u662f\u5426\u5b58\u6d3b\u3002<\/li>\n<li><strong>\u4e3b\u89c2\u4e0b\u7ebf\u548c\u5ba2\u89c2\u4e0b\u7ebf\uff1a<\/strong>\n<ul>\n<li>\u5f53\u4e00\u4e2a Sentinel \u8ba4\u4e3a\u4e3b\u8282\u70b9\u65e0\u6cd5\u8bbf\u95ee\uff0c\u5c31\u4f1a\u6807\u8bb0\u5176\u4e3a\u201c\u4e3b\u89c2\u4e0b\u7ebf\u201d\u3002<\/li>\n<li>\u5982\u679c\u5176\u4ed6 Sentinel \u4e5f\u540c\u610f\u8be5\u4e3b\u89c2\u4e0b\u7ebf\uff0c\u5219\u5c06\u5176\u5347\u7ea7\u4e3a\u201c\u5ba2\u89c2\u4e0b\u7ebf\u201d\uff0c\u542f\u52a8\u6545\u969c\u8f6c\u79fb\u6d41\u7a0b\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6545\u969c\u8f6c\u79fb\u6d41\u7a0b\uff1a<\/strong>\n<ul>\n<li>Sentinel \u4f1a\u901a\u8fc7\u9009\u4e3e\u673a\u5236\u5728\u5269\u4f59\u7684\u4ece\u8282\u70b9\u4e2d\u9009\u51fa\u4e00\u4e2a\u6700\u5408\u9002\u7684\u201c\u664b\u5347\u4e3a\u4e3b\u8282\u70b9\u201d\u7684\u8282\u70b9\u3002<\/li>\n<li>\u66f4\u65b0\u914d\u7f6e\uff0c\u5e76\u901a\u77e5\u6240\u6709\u4ece\u8282\u70b9\u6539\u4e3a\u590d\u5236\u65b0\u7684\u4e3b\u8282\u70b9\u3002<\/li>\n<li>\u8fd9\u671f\u95f4\uff0c\u4f1a\u5411\u5ba2\u6237\u7aef\u5e7f\u64ad\u65b0\u7684\u4e3b\u8282\u70b9\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u901a\u77e5\u5ba2\u6237\u7aef<\/strong>\n<ul>\n<li>\u5ba2\u6237\u7aef\uff08\u6216\u8005\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u6c60\uff09\u53ea\u9700\u8981\u8fde\u63a5 Sentinel\uff0c\u800c\u65e0\u9700\u624b\u52a8\u6307\u5b9a\u4e3b\u8282\u70b9\u3002<\/li>\n<li>\u5f53\u4e3b\u8282\u70b9\u5207\u6362\u65f6\uff0c\u5ba2\u6237\u7aef\u53ef\u4ee5\u901a\u8fc7 Sentinel \u67e5\u8be2\u6700\u65b0\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u5b9e\u73b0\u81ea\u52a8\u91cd\u8fde\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>Sentinel \u7684\u9ad8\u53ef\u7528\u672c\u8eab<\/strong>\n<ul>\n<li>\u901a\u5e38\u751f\u4ea7\u73af\u5883\u4f1a\u90e8\u7f72\u591a\u4e2a Sentinel \u8fdb\u7a0b\uff0c\u4e92\u4e3a\u5907\u4efd\u4e14\u901a\u8fc7\u6295\u7968\u65b9\u5f0f\u786e\u8ba4\u4e3b\u8282\u70b9\u662f\u5426\u6545\u969c\u3002<\/li>\n<li>\u53ea\u8981\u6709\u4e00\u4e2a Sentinel \u5b58\u6d3b\uff0c\u5c31\u53ef\u5411\u5ba2\u6237\u7aef\u63d0\u4f9b\u6700\u65b0\u7684\u4e3b\u8282\u70b9\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u4e09\u3001Redis Cluster vs Sentinel \u7684\u533a\u522b<\/h2>\n<ol>\n<li><strong>\u6838\u5fc3\u5b9a\u4f4d\/\u76ee\u6807<\/strong>\n<ul>\n<li>Redis Cluster\uff1a\n<ul>\n<li>\u4e3b\u8981\u89e3\u51b3 <strong>\u6570\u636e\u5206\u7247\uff08\u6c34\u5e73\u6269\u5bb9\uff09<\/strong> \u7684\u95ee\u9898\uff0c\u540c\u65f6\u63d0\u4f9b\u57fa\u7840\u7684\u9ad8\u53ef\u7528\u3002<\/li>\n<li>\u9002\u7528\u4e8e\u6570\u636e\u91cf\u5927\u3001\u541e\u5410\u91cf\u9ad8\uff0c\u9700\u8981\u8fdb\u884c\u5206\u5e03\u5f0f\u5b58\u50a8\u548c\u96c6\u7fa4\u6269\u5c55\u7684\u573a\u666f\u3002<\/li>\n<\/ul>\n<\/li>\n<li>Sentinel\uff1a\n<ul>\n<li>\u4e3b\u8981\u7528\u4e8e <strong>\u5355\u4e2a Redis \u4e3b\u4ece\u67b6\u6784\u7684\u9ad8\u53ef\u7528<\/strong>\uff1b\u4e0d\u63d0\u4f9b\u6570\u636e\u5206\u7247\u529f\u80fd\u3002<\/li>\n<li>\u9002\u7528\u4e8e Redis \u6570\u636e\u89c4\u6a21\u8f83\u5c0f\u6216\u5355\u8282\u70b9\u8db3\u4ee5\u652f\u6491\u4e1a\u52a1\uff0c\u4e14\u5e0c\u671b\u5728\u4e3b\u8282\u70b9\u6545\u969c\u65f6\u81ea\u52a8\u5b8c\u6210\u4e3b\u4ece\u5207\u6362\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6570\u636e\u5206\u5e03\u65b9\u5f0f<\/strong>\n<ul>\n<li><strong>Redis Cluster<\/strong>\uff1a\u6309\u69fd (hash slot) \u8fdb\u884c\u6570\u636e\u5206\u7247\uff0c\u652f\u6491\u5927\u6570\u636e\u91cf\u548c\u9ad8\u5e76\u53d1\u573a\u666f\u3002<\/li>\n<li><strong>Sentinel<\/strong>\uff1a\u65e0\u5206\u7247\uff0c\u901a\u5e38\u53ea\u662f\u4e00\u4e3b\u591a\u4ece\uff08\u6216\u591a\u5bf9\u4e3b\u4ece\uff09\uff0c\u6570\u636e\u5728\u6240\u6709\u4ece\u8282\u70b9\u4e4b\u95f4\u5b8c\u5168\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6545\u969c\u8f6c\u79fb\u673a\u5236<\/strong>\n<ul>\n<li><strong>Redis Cluster<\/strong>\uff1a\u8282\u70b9\u95f4\u901a\u8fc7 Gossip \u534f\u8bae\u4e92\u76f8\u901a\u4fe1\uff0c\u81ea\u52a8\u5224\u65ad\u5931\u6548\u8282\u70b9\u5e76\u8fdb\u884c\u4e3b\u4ece\u5207\u6362\uff1b\u96c6\u7fa4\u4f1a\u5c06\u4e00\u90e8\u5206\u69fd\u8f6c\u79fb\u5230\u65b0\u7684\u4e3b\u8282\u70b9\u4e0a\u3002<\/li>\n<li><strong>Sentinel<\/strong>\uff1aSentinel \u8fdb\u7a0b\u4f1a\u76d1\u63a7\u4e3b\u4ece\u7ed3\u6784\uff0c\u901a\u8fc7\u6295\u7968\u5bf9\u4e3b\u8282\u70b9\u4e0b\u7ebf\u4f5c\u51fa\u5224\u65ad\uff0c\u518d\u81ea\u52a8\u63d0\u62d4\u65b0\u7684\u4ece\u8282\u70b9\u4e3a\u4e3b\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5ba2\u6237\u7aef\u8bbf\u95ee\u6a21\u5f0f<\/strong>\n<ul>\n<li><strong>Redis Cluster<\/strong>\uff1a\u5ba2\u6237\u7aef\u9700\u8981\u652f\u6301 cluster \u6a21\u5f0f\uff0c\u8bbf\u95ee\u65f6\u6839\u636e key \u81ea\u52a8\u5b9a\u4f4d\u5230\u5bf9\u5e94\u7684\u8282\u70b9\uff0c\u5982\u679c\u8bbf\u95ee\u9519\u8bef\u8282\u70b9\u9700\u8981\u91cd\u5b9a\u5411\u3002<\/li>\n<li><strong>Sentinel<\/strong>\uff1a\u5ba2\u6237\u7aef\u53ea\u9700\u8981\u8fde\u63a5 Sentinel \u5e76\u83b7\u53d6\u5f53\u4e0b\u53ef\u7528\u7684\u4e3b\u8282\u70b9\u5730\u5740\uff0c\u65e0\u9700\u5173\u5fc3\u540e\u7aef\u7684\u8282\u70b9\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u90e8\u7f72\u590d\u6742\u5ea6<\/strong>\n<ul>\n<li><strong>Redis Cluster<\/strong>\uff1a\u9700\u8981\u81f3\u5c11 3 \u4e2a\u4e3b\u8282\u70b9\uff08\u52a0\u4e0a\u5404\u81ea\u4ece\u8282\u70b9\uff09\u624d\u80fd\u5728\u8282\u70b9\u6545\u969c\u65f6\u6b63\u5e38\u5de5\u4f5c\uff0c\u8fd8\u9700\u5ba2\u6237\u7aef\/\u5e94\u7528\u652f\u6301\uff1b\u6574\u4f53\u90e8\u7f72\u914d\u7f6e\u8f83\u4e3a\u590d\u6742\uff0c\u4f46\u53ef\u63d0\u4f9b\u6c34\u5e73\u6269\u5c55\u3002<\/li>\n<li><strong>Sentinel<\/strong>\uff1a\u5728\u5355\u4e3b\u591a\u4ece\u7684\u57fa\u7840\u4e0a\u989d\u5916\u90e8\u7f72\u82e5\u5e72\u4e2a Sentinel \u8fdb\u7a0b\u5373\u53ef\uff0c\u76f8\u5bf9\u7b80\u5355\uff1b\u9002\u5408\u4e2d\u5c0f\u89c4\u6a21\u6216\u5355\u673a\u8db3\u4ee5\u627f\u8f7d\u7684\u4e1a\u52a1\u573a\u666f\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u9002\u7528\u573a\u666f<\/strong>\n<ul>\n<li>Redis Cluster\uff1a\n<ul>\n<li>\u8d85\u5927\u89c4\u6a21\u6570\u636e\u5b58\u50a8\uff0c\u9700\u8981\u5206\u7247\u6269\u5bb9\uff1b<\/li>\n<li>\u5e0c\u671b\u5728\u4e00\u5957 Redis \u4e0a\u627f\u8f7d\u9ad8\u5e76\u53d1\u3001\u9ad8\u53ef\u7528\u4e14\u6570\u636e\u91cf\u8f83\u5927\u7684\u4e1a\u52a1\u3002<\/li>\n<\/ul>\n<\/li>\n<li>Sentinel\uff1a\n<ul>\n<li>\u6570\u636e\u89c4\u6a21\u8f83\u5c0f\u6216\u5355\u673a\u53ef\u627f\u8f7d\uff0c\u91cd\u70b9\u662f\u4e3b\u4ece\u7684\u9ad8\u53ef\u7528\uff08\u81ea\u52a8\u5207\u6362\uff09\uff1b<\/li>\n<li>\u5bf9\u8fd0\u7ef4\u548c\u90e8\u7f72\u7684\u590d\u6742\u5ea6\u8981\u6c42\u8f83\u4f4e\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>\u56db\u3001\u603b\u7ed3<\/h2>\n<ol>\n<li><strong>Redis Cluster<\/strong>\n<ul>\n<li>\u5206\u5e03\u5f0f\u67b6\u6784\uff1a\u63d0\u4f9b\u81ea\u52a8\u5206\u7247\u4e0e\u57fa\u672c\u7684\u9ad8\u53ef\u7528\uff1b<\/li>\n<li>\u9002\u5408\u6570\u636e\u91cf\u5927\u3001\u9700\u8981\u8d1f\u8f7d\u5747\u8861\u3001\u6c34\u5e73\u6269\u5bb9\u7684\u573a\u666f\uff1b<\/li>\n<li>\u90e8\u7f72\u66f4\u590d\u6742\uff0c\u5bf9\u5ba2\u6237\u7aef\u8981\u6c42\u66f4\u9ad8\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>Redis Sentinel<\/strong>\n<ul>\n<li>\u76d1\u63a7+\u9ad8\u53ef\u7528\uff1a\u5728\u5355\u4e3b\u591a\u4ece\u7684\u57fa\u7840\u4e0a\u5b9e\u73b0\u81ea\u52a8\u4e3b\u4ece\u5207\u6362\uff1b<\/li>\n<li>\u4e0d\u63d0\u4f9b\u6570\u636e\u5206\u7247\uff0c\u53ea\u89e3\u51b3\u9ad8\u53ef\u7528\uff1b<\/li>\n<li>\u90e8\u7f72\u7b80\u5355\u3001\u5bf9\u5ba2\u6237\u7aef\u6539\u52a8\u8f83\u5c0f\uff0c\u9002\u5408\u4e2d\u5c0f\u89c4\u6a21\u4e1a\u52a1\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u6839\u636e\u9879\u76ee\u9700\u6c42\uff0c\u5982\u679c\u60a8\u53ea\u662f\u5e0c\u671b Redis \u80fd\u591f\u5728\u4e3b\u8282\u70b9\u6545\u969c\u65f6\u81ea\u52a8\u5207\u6362\u5230\u4ece\u8282\u70b9\uff0c\u90a3\u4e48 <strong>Sentinel<\/strong> \u5c31\u8db3\u591f\u6ee1\u8db3\u9ad8\u53ef\u7528\u9700\u6c42\uff1b\u4f46\u5982\u679c\u60a8\u9700\u8981\u5728\u591a\u53f0\u673a\u5668\u95f4<strong>\u5206\u7247\u5b58\u50a8<\/strong>\u6d77\u91cf\u6570\u636e\u5e76\u540c\u65f6\u517c\u987e\u9ad8\u53ef\u7528\uff0c\u5219\u9700\u8981\u4f7f\u7528 <strong>Redis Cluster<\/strong>\u3002\u6709\u65f6\u4e5f\u4f1a\u51fa\u73b0 <strong>Redis Cluster + Sentinel<\/strong> \u6df7\u5408\u4f7f\u7528\u7684\u573a\u666f\uff08\u4f46\u66f4\u5e38\u89c1\u7684\u662f Redis Cluster \u81ea\u5df1\u8d1f\u8d23\u9ad8\u53ef\u7528\uff0cSentinel \u4ec5\u7528\u4e8e\u4f20\u7edf\u5355\u4f53 Redis \u90e8\u7f72\uff09\u3002<\/p>\n<p>\u9009\u62e9\u5408\u9002\u7684\u65b9\u6848\uff0c\u624d\u80fd\u5728\u4fdd\u8bc1\u9ad8\u53ef\u7528\u7684\u540c\u65f6\u517c\u987e\u90e8\u7f72\u6210\u672c\u4e0e\u8fd0\u7ef4\u590d\u6742\u5ea6\u3002<\/p>\n<h1>11.\u539f\u751f\u547d\u4ee4\u90e8\u7f72 Cluster<\/h1>\n<h2>11.1 \u5728\u6240\u6709\u8282\u70b9\u4e0a\u5b89\u88c5redis\u5e76\u542f\u52a8cluster\u529f\u80fd<\/h2>\n<pre><code class=\"language-bash\"># \u5148\u901a\u8fc7\u811a\u672c\u7f16\u8bd1\u5b89\u88c5Redis\uff0c6\u53f0Redis\nnode1 10.0.0.40\nnode2 10.0.0.41\nnode3 10.0.0.42\nnode4 10.0.0.50\nnode5 10.0.0.112\nnode6 10.0.0.113\n\n# \u624b\u52a8\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\nbind 0.0.0.0\nmasterauth 123456 #\u5efa\u8bae\u914d\u7f6e\uff0c\u5426\u5219\u540e\u671f\u7684master\u548cslave\u4e3b\u4ece\u590d\u5236\u65e0\u6cd5\u6210\u529f\uff0c\u8fd8\u9700\u5728\u914d\u7f6e\nrequirepass 123456\ncluster-enabled yes #\u53d6\u6d88\u6b64\u884c\u6ce8\u91ca\uff0c\u5fc5\u987b\u5f00\u542f\u96c6\u7fa4\uff0c\u5f00\u542f\u540eRedis \u8fdb\u7a0b\u4f1a\u6709Cluster\u6807\u8bc6\ncluster-config-file nodes-6379.conf #\u53d6\u6d88\u6b64\u884c\u6ce8\u91ca\uff0c\u6b64\u4e3a\u96c6\u7fa4\u72b6\u6001\u6587\u4ef6\uff0c\u8bb0\u5f55\u4e3b\u4ece\u5173\u7cfb\u5373slot\u8303\u56f4\u4fe1\u606f\uff0c\u7531redis cluster \u96c6\u7fa4\u81ea\u52a8\u521b\u5efa\u548c\u7ef4\u62a4\ncluster-require-full-coverage no #\u9ed8\u8ba4\u503c\u4e3ayes\uff0c\u8bbe\u4e3ano\u53ef\u4ee5\u9632\u6b62\u4e00\u4e2a\u8282\u70b9\u4e0d\u53ef\u7528\u5bfc\u81f4\u6574\u4e2acluster\u4e0d\u53ef\u7528\n\n# \u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u76f8\u5173\u8bbe\u7f6e-6\u53f0\u90fd\u6267\u884c\nsed -i.bak -e &#039;s\/bind 127.0.0.1\/bind 0.0.0.0\/&#039; -e &#039;\/masterauth\/a masterauth 123456&#039; -e &#039;\/# requirepass\/a requirepass 123456&#039; -e &#039;\/# cluster-enabled yes\/a cluster-enabled yes&#039; -e &#039;\/# cluster-config-file nodes-6379.conf\/a cluster-config-file nodes-6379.conf&#039; -e &#039;\/cluster-require-full-coverage yes\/c cluster-require-full-coverage no&#039; \/apps\/redis\/etc\/redis.conf\n\n# \u67e5\u770b\u5f53\u524dredis\u8fdb\u7a0b\n[root@node5 ~]# ps aux | grep redis\nredis      43944  0.3  0.4 134120  7952 ?        Ssl  22:09   0:08 \/apps\/redis\/bin\/redis-server 0.0.0.0:6379\nroot       44019  0.0  0.1   6408  2156 pts\/0    S+   22:49   0:00 grep --color=auto redis\n\n# \u91cd\u542f\u670d\u52a1-6\u53f0\u6267\u884c\n[root@node1 ~]#systemctl restart redis\n# \u518d\u6b21\u67e5\u770bredis\u8fdb\u7a0b\uff0c\u53d1\u73b0\u6709cluster\u6807\u8bc6\n[root@node1 ~]#ps aux | grep redis\nredis      22009  0.1  0.8 136680  8192 ?        Ssl  22:54   0:00 \/apps\/redis\/bin\/redis-server 0.0.0.0:6379 [cluster]\nroot       22033  0.0  0.2   6408  2176 pts\/0    S+   22:54   0:00 grep --color=auto redis\n[root@node1 ~]#<\/code><\/pre>\n<h2>11.2 \u6267\u884cmeet\u64cd\u4f5c\u5b9e\u73b0\u76f8\u4e92\u901a\u4fe1<\/h2>\n<pre><code class=\"language-bash\">redis-cli -h &lt;\u5df2\u5b58\u5728\u8282\u70b9IP&gt; -p &lt;\u5df2\u5b58\u5728\u8282\u70b9\u7aef\u53e3&gt; \\\n  cluster meet &lt;\u65b0\u8282\u70b9IP&gt; &lt;\u65b0\u8282\u70b9\u7aef\u53e3&gt;\n# \u5982\u679c\u5728\u5df2\u5b58\u5728\u8282\u70b9ip\u8fd9\u53f0\u673a\u5668\u4e0a\u6267\u884c\uff0c &lt;\u5df2\u5b58\u5728\u8282\u70b9IP&gt; -p &lt;\u5df2\u5b58\u5728\u8282\u70b9\u7aef\u53e3&gt; \u8fd9\u4e2a\u53ef\u4ee5\u7701\u7565\u4e0d\u5199<\/code><\/pre>\n<blockquote>\n<p>\u5728 Redis \u96c6\u7fa4\u4e2d\uff0c\u4f7f\u7528 <code>CLUSTER MEET<\/code> \u547d\u4ee4\u662f\u4e3a\u4e86\u5c06\u65b0\u8282\u70b9\u5f15\u5165\u5230\u96c6\u7fa4\u4e2d\uff0c\u800c\u4e00\u65e6\u65b0\u8282\u70b9\u88ab\u5f15\u5165\uff0c\u5b83\u4f1a\u4e0e\u96c6\u7fa4\u4e2d\u7684\u6240\u6709\u5176\u4ed6\u8282\u70b9\u8fdb\u884c\u901a\u4fe1\u3002\u8fd9\u79cd\u901a\u4fe1\u884c\u4e3a\u662f Redis \u96c6\u7fa4\u8bbe\u8ba1\u7684\u7ed3\u679c\uff0c\u56e0\u4e3a Redis \u96c6\u7fa4\u672c\u8d28\u4e0a\u662f <strong>\u5168\u8fde\u63a5<\/strong> \u7684\u3002<\/p>\n<h3>\u539f\u56e0\uff1aRedis \u96c6\u7fa4\u7684\u5168\u8fde\u63a5\u673a\u5236<\/h3>\n<ol>\n<li><strong>Redis \u96c6\u7fa4\u4e2d\u7684\u8282\u70b9\u76f8\u4e92\u611f\u77e5\uff1a<\/strong>\n<ul>\n<li>\u5f53\u4f60\u901a\u8fc7 <code>CLUSTER MEET<\/code> \u547d\u4ee4\u5c06\u4e00\u4e2a\u65b0\u8282\u70b9\uff08\u6bd4\u5982 <code>10.0.0.41<\/code>\uff09\u5f15\u5165\u5230\u96c6\u7fa4\u4e2d\u65f6\uff0c\u8fd9\u4e2a\u8282\u70b9\u4f1a\u4ece\u4f60\u6267\u884c <code>CLUSTER MEET<\/code> \u7684\u8282\u70b9\u90a3\u91cc\u83b7\u53d6\u96c6\u7fa4\u7684\u62d3\u6251\u4fe1\u606f\u3002<\/li>\n<li>\u83b7\u53d6\u5230\u7684\u62d3\u6251\u4fe1\u606f\u4e2d\u5305\u542b\u4e86\u96c6\u7fa4\u4e2d\u6240\u6709\u5176\u4ed6\u8282\u70b9\u7684\u5730\u5740\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u81ea\u52a8\u5efa\u7acb\u8fde\u63a5\uff1a<\/strong>\n<ul>\n<li>\u65b0\u52a0\u5165\u7684\u8282\u70b9\u4f1a\u4e3b\u52a8\u4e0e\u96c6\u7fa4\u4e2d\u5176\u4ed6\u6240\u6709\u8282\u70b9\u5efa\u7acb\u901a\u4fe1\u8fde\u63a5\uff08\u5305\u62ec\u5fc3\u8df3\u5305\u3001\u69fd\u4fe1\u606f\u540c\u6b65\u7b49\uff09\u3002<\/li>\n<li>\u540c\u6837\uff0c\u5176\u4ed6\u6240\u6709\u8282\u70b9\u4e5f\u4f1a\u4e0e\u65b0\u52a0\u5165\u7684\u8282\u70b9\u5efa\u7acb\u901a\u4fe1\u8fde\u63a5\uff0c\u4ece\u800c\u5f62\u6210\u4e00\u4e2a\u5168\u8fde\u63a5\u7684\u7f51\u7edc\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4e3a\u4ec0\u4e48\u5176\u4ed6\u8282\u70b9\u4e4b\u95f4\u4e5f\u901a\u4fe1\uff1a<\/strong>\n<ul>\n<li>\u5f53\u4f60\u901a\u8fc7 <code>CLUSTER MEET<\/code> \u547d\u4ee4\u5c06\u591a\u4e2a\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d\uff08\u6bd4\u5982 <code>10.0.0.42<\/code> \u548c <code>10.0.0.50<\/code>\uff09\uff0c\u8fd9\u4e9b\u8282\u70b9\u4f1a\u9010\u6b65\u901a\u8fc7\u96c6\u7fa4\u7684\u62d3\u6251\u4fe1\u606f\u4e92\u76f8\u53d1\u73b0\u5bf9\u65b9\uff0c\u5e76\u5efa\u7acb\u901a\u4fe1\u8fde\u63a5\u3002<\/li>\n<li>\u56e0\u6b64\uff0c\u4e0d\u4ec5\u672c\u673a\u8282\u70b9\u4e0e\u5176\u4ed6\u8282\u70b9\u901a\u4fe1\uff0c\u6240\u6709\u8282\u70b9\u4e4b\u95f4\u90fd\u4f1a\u5efa\u7acb\u901a\u4fe1\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>\u96c6\u7fa4\u901a\u4fe1\u8bbe\u8ba1\u7684\u76ee\u7684<\/h3>\n<p>Redis \u96c6\u7fa4\u8bbe\u8ba1\u4e3a\u5168\u8fde\u63a5\u7f51\u7edc\uff0c\u5176\u76ee\u7684\u662f\uff1a<\/p>\n<ol>\n<li><strong>\u4fdd\u8bc1\u9ad8\u53ef\u7528\u6027\uff1a<\/strong> \u6bcf\u4e2a\u8282\u70b9\u90fd\u80fd\u5feb\u901f\u68c0\u6d4b\u5230\u5176\u4ed6\u8282\u70b9\u7684\u72b6\u6001\uff08\u901a\u8fc7\u5fc3\u8df3\u5305\u673a\u5236\uff09\uff0c\u5982\u679c\u67d0\u4e2a\u8282\u70b9\u51fa\u73b0\u6545\u969c\uff0c\u96c6\u7fa4\u53ef\u4ee5\u8fc5\u901f\u611f\u77e5\u5e76\u89e6\u53d1\u6545\u969c\u8f6c\u79fb\uff08failover\uff09\u3002<\/li>\n<li><strong>\u69fd\u5206\u5e03\u540c\u6b65\uff1a<\/strong> \u6bcf\u4e2a\u8282\u70b9\u90fd\u4f1a\u77e5\u9053\u96c6\u7fa4\u4e2d\u6240\u6709\u69fd\uff08slots\uff09\u7684\u5206\u5e03\uff0c\u65b9\u4fbf\u5728\u8bf7\u6c42\u8f6c\u53d1\u6216\u69fd\u8fc1\u79fb\u65f6\u5feb\u901f\u627e\u5230\u76ee\u6807\u8282\u70b9\u3002<\/li>\n<li><strong>\u6570\u636e\u4e00\u81f4\u6027\uff1a<\/strong> \u526f\u672c\u8282\u70b9\u9700\u8981\u5b9a\u671f\u4e0e\u4e3b\u8282\u70b9\u540c\u6b65\u6570\u636e\uff0c\u800c\u8fd9\u79cd\u5168\u8fde\u63a5\u7684\u8bbe\u8ba1\u8ba9\u4efb\u4f55\u8282\u70b9\u90fd\u80fd\u5feb\u901f\u627e\u5230\u9700\u8981\u901a\u4fe1\u7684\u76ee\u6807\u8282\u70b9\u3002<\/li>\n<\/ol>\n<\/blockquote>\n<pre><code class=\"language-bash\">[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n167cc05be9ab506a5fa687e8c9dded4dc2b633a5 :6379@16379 myself,master - 0 0 0 connected\n\n# \u6267\u884cmeet\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster meet 10.0.0.41 6379\nroot@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster meet 10.0.0.42 6379\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster meet 10.0.0.50 6379\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster meet 10.0.0.112 6379\nroot@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster meet 10.0.0.113 6379\n\n# \u67e5\u770b\u8fde\u63a5\u60c5\u51b5-\u4e0e\u5176\u4ed65\u53f0\u673a\u5668\u8fdb\u884c\u901a\u4fe1\n[root@node1 ~]#ss -nt\nState            Recv-Q            Send-Q                         Local Address:Port                          Peer Address:Port             Process            \nESTAB            0                 0                                  10.0.0.40:56390                            10.0.0.42:16379                               \nESTAB            0                 0                                  10.0.0.40:56116                           10.0.0.112:16379                               \nESTAB            0                 0                                  10.0.0.40:22                                10.0.0.1:4078                                \nESTAB            0                 0                                  10.0.0.40:16379                           10.0.0.112:55198                               \nESTAB            0                 0                                  10.0.0.40:16379                           10.0.0.113:59318                               \nESTAB            0                 0                                  10.0.0.40:16379                            10.0.0.50:42352                               \nESTAB            0                 0                                  10.0.0.40:16379                            10.0.0.41:46130                               \nESTAB            0                 0                                  10.0.0.40:35310                            10.0.0.41:16379                               \nESTAB            0                 0                                  10.0.0.40:45462                           10.0.0.113:16379                               \nESTAB            0                 0                                  10.0.0.40:16379                            10.0.0.42:38686                               \nESTAB            0                 0                                  10.0.0.40:52672                            10.0.0.50:16379                               \n[root@node1 ~]#ss -nlt\nState             Recv-Q            Send-Q                         Local Address:Port                          Peer Address:Port            Process            \nLISTEN            0                 128                                  0.0.0.0:22                                 0.0.0.0:*                                  \nLISTEN            0                 511                                  0.0.0.0:6379                               0.0.0.0:*                                  \nLISTEN            0                 511                                  0.0.0.0:16379 #\u96c6\u7fa4\u7684\u5de5\u4f5c\u7aef\u53e3                             0.0.0.0:*                                  \nLISTEN            0                 128                                     [::]:22                                    [::]:*                                  \nLISTEN            0                 511                                    [::1]:16379                                 [::]:*                                  \nLISTEN            0                 511                                    [::1]:6379                                  [::]:*                                  \n[root@node1 ~]#\n\n# \u67e5\u770bcluster\u7684\u6240\u6709\u8282\u70b9\u76f8\u4e92\u901a\u4fe1\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster nodes\n167cc05be9ab506a5fa687e8c9dded4dc2b633a5 10.0.0.40:6379@16379 myself,master - 0 0 1 connected\n5b4b959cec186ee66836d176305b6db55f0ac451 10.0.0.41:6379@16379 master - 0 1736781760000 0 connected\n3e9cf23bbfbcbd673d8c5b4abaf3f0e722c94b2a 10.0.0.112:6379@16379 master - 0 1736781758000 5 connected\n2758daa041534a8eaef4ac279b430b0836d1e7f4 10.0.0.113:6379@16379 master - 0 1736781761000 4 connected\n14468ef2bc32bcf9819b97c72c1c567916a93354 10.0.0.42:6379@16379 master - 0 1736781759894 2 connected\n2d56d8d0b9ee2afce646c61577c8b622b87bafe3 10.0.0.50:6379@16379 master - 0 1736781762048 3 connected\n[root@node1 ~]#\n\n# \u5f53\u524d\u72b6\u6001\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster info\ncluster_state:fail\ncluster_slots_assigned:0 #\u65e0\u69fd\u4f4d\u5206\u914d\ncluster_slots_ok:0\ncluster_slots_pfail:0\ncluster_slots_fail:0\ncluster_known_nodes:6 #\u5df2\u77e5\u7684\u8282\u70b9\u67096\u53f0\ncluster_size:0\ncluster_current_epoch:5\ncluster_my_epoch:1\ncluster_stats_messages_ping_sent:1239\ncluster_stats_messages_pong_sent:1279\ncluster_stats_messages_meet_sent:5\ncluster_stats_messages_sent:2523\ncluster_stats_messages_ping_received:1279\ncluster_stats_messages_pong_received:1244\ncluster_stats_messages_received:2523\ntotal_cluster_links_buffer_limit_exceeded:0\n[root@node1 ~]#<\/code><\/pre>\n<h2>11.3 \u4e3a\u5404\u4e2amaster\u8282\u70b9\u6307\u6d3e\u69fd\u4f4d\u8303\u56f4<\/h2>\n<p><strong>\u65b9\u6cd51\uff1a\u624b\u52a8\u5206\u914d\u69fd<\/strong><\/p>\n<pre><code class=\"language-bash\"># \u4f8b\u5982\u7ed9\u65b0\u8282\u70b9\u5206\u914d [5461-6000] \u8fd9 540 \u4e2a slots\nredis-cli -a 123456 -h &lt;\u65b0\u8282\u70b9IP&gt; -p &lt;\u65b0\u8282\u70b9\u7aef\u53e3&gt; cluster addslots {5461..6000}<\/code><\/pre>\n<p><strong>\u65b9\u6cd52\uff1a\u811a\u672c\u81ea\u52a8\u5316\u5206\u914d<\/strong><\/p>\n<pre><code class=\"language-bash\"># \u521b\u5efa\u6dfb\u52a0\u69fd\u4f4d\u7684\u811a\u672c(\u4e3amaster\u8282\u70b9\u5206\uff0cslave\u4e0d\u9700\u8981\uff0c\u4f1a\u81ea\u52a8\u540c\u6b65master)\n[root@node1 ~]#cat addslot.sh\n#!\/bin\/bash\nhost=$1\nport=$2\nstart=$3\nend=$4\npass=123456\n\nfor slot in $(seq ${start} ${end}); do\n  echo &quot;Adding slot: $slot&quot;\n  redis-cli -h ${host} -p ${port} -a ${pass} --no-auth-warning \\\n    cluster addslots ${slot}\ndone<\/code><\/pre>\n<pre><code class=\"language-bash\">[root@node1 ~]#.\/addslots.sh 10.0.0.40 6379 0 5460\n[root@node1 ~]#.\/addslots.sh 10.0.0.41 6379 5461 10922\n[root@node1 ~]#.\/addslots.sh 10.0.0.42 6379 10922 16383\n\n#\u67e5\u770b\u96c6\u7fa4\u4fe1\u606f\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster info\ncluster_state:ok #\u5f53\u524d Redis \u96c6\u7fa4\u7684\u6574\u4f53\u72b6\u6001\uff08ok\uff1a\u96c6\u7fa4\u6b63\u5e38\u8fd0\u884c\u3002fail\uff1a\u96c6\u7fa4\u6709\u95ee\u9898\uff08\u5982\u672a\u5206\u914d\u69fd\u4f4d\uff0c\u6216\u67d0\u4e9b\u8282\u70b9\u4e0d\u53ef\u7528\uff09\u3002\uff09\ncluster_slots_assigned:16384 #\u5206\u914d\u7684\u69fd\u4f4d\u6570\u91cf\uff0cRedis \u96c6\u7fa4\u603b\u5171\u6709 16384 \u4e2a\u69fd\u4f4d\u3002\uff08 0\uff0c\u8868\u793a\u6ca1\u6709\u5206\u914d\u4efb\u4f55\u69fd\u4f4d\uff0c\u8fd9\u4f1a\u5bfc\u81f4 cluster_state:fail \u7684\u539f\u56e0\u4e4b\u4e00\u3002\uff09\ncluster_slots_ok:16384 #\u72b6\u6001\u6b63\u5e38\u7684\u69fd\u4f4d\u6570\u91cf\u3002\ncluster_slots_pfail:0 #\u90e8\u5206\u5931\u8d25\uff08PFAIL\uff09 \u7684\u69fd\u4f4d\u6570\u91cf\u3002\u67d0\u4e9b\u8282\u70b9\u7684\u72b6\u6001\u5728\u77ed\u65f6\u95f4\u5185\u6ca1\u6709\u54cd\u5e94\u5fc3\u8df3\uff0c\u4f46\u5c1a\u672a\u88ab\u6b63\u5f0f\u6807\u8bb0\u4e3a\u5931\u8d25\u3002\ncluster_slots_fail:0 #\u5931\u8d25\uff08FAIL\uff09 \u7684\u69fd\u4f4d\u6570\u91cf\u3002\u8868\u660e\u67d0\u4e9b\u69fd\u7684\u4e3b\u8282\u70b9\u5df2\u7ecf\u88ab\u6807\u8bb0\u4e3a\u5931\u8d25\uff0c\u9700\u8981\u624b\u52a8\u4fee\u590d\u3002\ncluster_known_nodes:6 #\u96c6\u7fa4\u4e2d\u5df2\u77e5\u7684\u8282\u70b9\u6570\u91cf\uff0c\u5305\u62ec\u4e3b\u8282\u70b9\u548c\u4ece\u8282\u70b9\u3002\ncluster_size:3 #\u5f53\u524d\u96c6\u7fa4\u4e2d\u6709\u51e0\u4e2a\u4e3b\u8282\u70b9\uff08\u901a\u5e38\u6307\u5df2\u5206\u914d\u69fd\u4f4d\u7684\u4e3b\u8282\u70b9\u6570\u91cf\uff09\u3002\ncluster_current_epoch:5 #\u5f53\u524d\u96c6\u7fa4\u7684\u5168\u5c40\u5143\u6570\u636e\u7248\u672c\uff0c\u6bcf\u5f53\u96c6\u7fa4\u62d3\u6251\u53d1\u751f\u53d8\u5316\uff08\u5982\u6dfb\u52a0\u6216\u5220\u9664\u8282\u70b9\u3001\u91cd\u65b0\u5206\u914d\u69fd\u4f4d\uff09\u65f6\uff0c\u6b64\u503c\u4f1a\u9012\u589e\u3002\ncluster_my_epoch:1 #\u5f53\u524d\u8282\u70b9\u7684\u5143\u6570\u636e\u7248\u672c\u3002\u901a\u5e38\u60c5\u51b5\u4e0b\uff0ccluster_my_epoch \u53cd\u6620\u4e86\u8be5\u8282\u70b9\u7684\u521d\u59cb\u5316\u65f6\u7684\u5206\u914d\u7248\u672c\u3002\ncluster_stats_messages_ping_sent:1894 #\u5f53\u524d\u8282\u70b9\u5df2\u53d1\u9001\u7684 PING \u6d88\u606f\u6570\u91cf\uff0c\u7528\u4e8e\u4e0e\u5176\u4ed6\u8282\u70b9\u7684\u5fc3\u8df3\u901a\u4fe1\u3002\ncluster_stats_messages_pong_sent:1953 #\u5f53\u524d\u8282\u70b9\u5df2\u53d1\u9001\u7684 PONG \u6d88\u606f\u6570\u91cf\uff0c\u7528\u4e8e\u54cd\u5e94\u5176\u4ed6\u8282\u70b9\u7684 PING \u6d88\u606f\u3002\ncluster_stats_messages_meet_sent:5 #\u5f53\u524d\u8282\u70b9\u5df2\u53d1\u9001\u7684 MEET \u6d88\u606f\u6570\u91cf\uff0c\u7528\u4e8e\u5f15\u5165\u65b0\u8282\u70b9\u65f6\u7684\u63e1\u624b\u901a\u4fe1\u3002\ncluster_stats_messages_sent:3852 #\u5f53\u524d\u8282\u70b9\u53d1\u9001\u7684\u6240\u6709\u7c7b\u578b\u6d88\u606f\u7684\u603b\u6570\u91cf\u3002\ncluster_stats_messages_ping_received:1953 #\u5f53\u524d\u8282\u70b9\u6536\u5230\u7684 PING \u6d88\u606f\u6570\u91cf\u3002\ncluster_stats_messages_pong_received:1899 #\u5f53\u524d\u8282\u70b9\u6536\u5230\u7684 PONG \u6d88\u606f\u6570\u91cf\u3002\ncluster_stats_messages_received:3852 #\u5f53\u524d\u8282\u70b9\u6536\u5230\u7684\u6240\u6709\u7c7b\u578b\u6d88\u606f\u7684\u603b\u6570\u91cf\u3002\ntotal_cluster_links_buffer_limit_exceeded:0 #\u96c6\u7fa4\u4e2d\u8fde\u63a5\u7f13\u51b2\u533a\u8d85\u51fa\u9650\u5236\u7684\u603b\u6b21\u6570\u3002\u5982\u679c\u503c\u5927\u4e8e 0\uff0c\u8868\u793a\u53ef\u80fd\u6709\u6027\u80fd\u74f6\u9888\uff0c\u9700\u8981\u68c0\u67e5\u96c6\u7fa4\u7684\u7f51\u7edc\u8fde\u63a5\u6216\u7f13\u51b2\u533a\u914d\u7f6e\u3002\n#\u67e5\u770b\u96c6\u7fa4\u8282\u70b9\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster nodes\n167cc05be9ab506a5fa687e8c9dded4dc2b633a5 10.0.0.40:6379@16379 myself,master - 0 0 1 connected 0-5460\n5b4b959cec186ee66836d176305b6db55f0ac451 10.0.0.41:6379@16379 master - 0 1736782488967 0 connected 5461-10922\n3e9cf23bbfbcbd673d8c5b4abaf3f0e722c94b2a 10.0.0.112:6379@16379 master - 0 1736782485000 5 connected\n2758daa041534a8eaef4ac279b430b0836d1e7f4 10.0.0.113:6379@16379 master - 0 1736782486000 4 connected\n14468ef2bc32bcf9819b97c72c1c567916a93354 10.0.0.42:6379@16379 master - 0 1736782486809 2 connected 10923-16383\n2d56d8d0b9ee2afce646c61577c8b622b87bafe3 10.0.0.50:6379@16379 master - 0 1736782487891 3 connected\n[root@node1 ~]#<\/code><\/pre>\n<p><strong>\u82e5\u4e0d\u5c0f\u5fc3\u5206\u914d\u9519\u4e86\u69fd\u4f4d\uff0c\u5982\u4f55\u5220\u9664\/\u91cd\u65b0\u5206\u914d\uff1f<\/strong><\/p>\n<pre><code class=\"language-bash\"># 1.\u5220\u9664\u69fd\uff08\u524d\u63d0\uff1a\u69fd\u5185\u65e0\u6570\u636e\u6216\u4e0d\u5173\u5fc3\u6570\u636e\uff09\n# \u5220\u9664\u5355\u4e2a\u69fd\nredis-cli -h &lt;wrong_host&gt; -p &lt;wrong_port&gt; -a 123456 cluster delslots 100\n# \u6216\u5220\u9664\u591a\u4e2a\u69fd\nredis-cli -h &lt;wrong_host&gt; -p &lt;wrong_port&gt; -a 123456 cluster delslots 100 101 102\n\n#\u6216\u8005\u4f7f\u7528\u6279\u91cf\u811a\u672c\u4e00\u6b21\u6027\u5220\u9664\u6574\u4e2a\u533a\u95f4\uff1a\nfor slot in $(seq 0 5000); do\n  redis-cli -h &lt;wrong_host&gt; -p &lt;wrong_port&gt; -a 123456 cluster delslots ${slot}\ndone\n\n#\u91cd\u65b0\u5206\u914d\u5230\u6b63\u786e\u8282\u70b9\n# \u5230\u6b63\u786e\u8282\u70b9 (correct_host, correct_port) \u4e0a\u6dfb\u52a0\u8fd9\u4e9b\u69fd\nfor slot in $(seq 0 5000); do\n  redis-cli -h &lt;correct_host&gt; -p &lt;correct_port&gt; -a 123456 cluster addslots ${slot}\ndone\n<\/code><\/pre>\n<p><strong>\u5982\u679c\u69fd\u5185\u6709\u6570\u636e\uff0c\u8be5\u600e\u4e48\u5904\u7406\uff1f<\/strong><\/p>\n<p>\u5982\u679c\u69fd\u5185\u5df2\u7ecf\u5b58\u6709\u952e\u503c\u6570\u636e\uff0c\u4e0d\u80fd\u76f4\u63a5 <code>delslots<\/code>\uff0c\u5426\u5219\u4f1a\u9020\u6210\u96c6\u7fa4\u4e0d\u4e00\u81f4\u6216\u62a5\u9519\uff1b\u6b64\u65f6\u9700\u8981<strong>\u5148\u5c06\u6570\u636e\u8fc1\u79fb<\/strong>\u5230\u76ee\u6807\u8282\u70b9\uff0c\u7136\u540e\u518d\u6267\u884c <code>delslots<\/code>\u3002\u7b80\u8981\u6d41\u7a0b\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-bash\"># 1.\u5c06\u69fd\u6807\u8bb0\u4e3a\u5f85\u8fc1\u79fb\n# \u5728\u6e90\u8282\u70b9\u4e0a\u6267\u884c\nredis-cli -h &lt;src_host&gt; -p &lt;src_port&gt; -a &lt;pass&gt; cluster setslot &lt;slot&gt; migrating &lt;dest_node_id&gt;\n\n# \u5728\u76ee\u6807\u8282\u70b9\u6267\u884c\uff1a\nredis-cli -h &lt;dest_host&gt; -p &lt;dest_port&gt; -a &lt;pass&gt; cluster setslot &lt;slot&gt; importing &lt;src_node_id&gt;\n\n# 2.\u4f7f\u7528 migrate \u547d\u4ee4\u642c\u79fb\u6570\u636e\uff08\u5728\u6e90\u8282\u70b9\u4e0a\uff0c\u5bf9\u6240\u6709\u5c5e\u4e8e\u8be5\u69fd\u4f4d\u7684 key \u6267\u884c migrate \u5230\u76ee\u6807\u8282\u70b9\uff1b\u4e5f\u53ef\u4ee5\u7528 redis-cli --cluster reshard \u4ea4\u4e92\u5f0f\u81ea\u52a8\u8fc1\u79fb\u3002\u6216\u8005\u9010\u6761 DUMP + RESTORE \u7684\u65b9\u5f0f\u8fc1\u79fb\uff0c\u4e5f\u53ef\u4ee5\u811a\u672c\u5316\u3002\uff09\n\n# 3.\u5c06\u69fd\u6807\u8bb0\u5230\u65b0\u8282\u70b9\n# \u5728\u76ee\u6807\u8282\u70b9\u6267\u884c\uff1a\nredis-cli -h &lt;dest_host&gt; -p &lt;dest_port&gt; -a &lt;pass&gt; cluster setslot &lt;slot&gt; node &lt;dest_node_id&gt;\n# \u5728\u6e90\u8282\u70b9\u6267\u884c cluster delslots &lt;slot&gt;\uff08\u5982\u679c\u4e0d\u518d\u9700\u8981\u8be5\u69fd\uff09\u3002\n\n# \u5b9e\u9645\u751f\u4ea7\u73af\u5883 \u4e2d\uff0c\u4f7f\u7528 redis-cli --cluster reshard \u6216 redis-cli --cluster move \u547d\u4ee4\u4f1a\u81ea\u52a8\u5b8c\u6210 importing\/migrating \u7b49\u8fc7\u7a0b\uff0c\u5e76\u907f\u514d\u624b\u52a8\u64cd\u4f5c\u5931\u8bef<\/code><\/pre>\n<h2>11.4 \u6307\u5b9a\u5404\u4e2a\u8282\u70b9\u7684\u4e3b\u4ece\u5173\u7cfb<\/h2>\n<pre><code class=\"language-bash\"># \u901a\u8fc7\u4e0a\u9762cluster nodes \u67e5\u770bmaster\u7684ID\u4fe1\u606f\uff0c\u6267\u884c\u4e0b\u9762\u64cd\u4f5c\uff0c\u5c06\u5bf9\u5e94\u7684slave \u6307\u5b9a\u76f8\u5e94\u7684master\u8282\u70b9\uff0c\u5b9e\u73b0\u4e09\u5bf9\u4e3b\u4ece\u8282\u70b9\n\n# master\uff1a10.0.0.40-slave\uff1a10.0.0.50\uff08\u540e\u9762\u7684ID\u5bf9\u5e94\u7684master\u7684id\uff0c\u524d\u9762\u5199\u7684\u662fslave\u7684ip\uff09\n[root@node1 ~]#redis-cli -h 10.0.0.50 -a 123456 --no-auth-warning cluster replicate 167cc05be9ab506a5fa687e8c9dded4dc2b633a5\n# master\uff1a10.0.0.41-slave\uff1a10.0.0.112\n[root@node1 ~]#redis-cli -h 10.0.0.112 -a 123456 --no-auth-warning cluster replicate 5b4b959cec186ee66836d176305b6db55f0ac451\n# master\uff1a10.0.0.42-slave\uff1a10.0.0.13\n[root@node1 ~]#redis-cli -h 10.0.0.113 -a 123456 --no-auth-warning cluster replicate 14468ef2bc32bcf9819b97c72c1c567916a93354\n\n# \u67e5\u770b\u8282\u70b9\u95f4\u5173\u7cfb\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster nodes\n167cc05be9ab506a5fa687e8c9dded4dc2b633a5 10.0.0.40:6379@16379 myself,master - 0 0 1 connected 0-5460\n5b4b959cec186ee66836d176305b6db55f0ac451 10.0.0.41:6379@16379 master - 0 1736782929293 0 connected 5461-10922\n3e9cf23bbfbcbd673d8c5b4abaf3f0e722c94b2a 10.0.0.112:6379@16379 slave 5b4b959cec186ee66836d176305b6db55f0ac451 0 1736782927129 0 connected\n2758daa041534a8eaef4ac279b430b0836d1e7f4 10.0.0.113:6379@16379 slave 14468ef2bc32bcf9819b97c72c1c567916a93354 0 1736782930369 2 connected\n14468ef2bc32bcf9819b97c72c1c567916a93354 10.0.0.42:6379@16379 master - 0 1736782928211 2 connected 10923-16383\n2d56d8d0b9ee2afce646c61577c8b622b87bafe3 10.0.0.50:6379@16379 slave 167cc05be9ab506a5fa687e8c9dded4dc2b633a5 0 1736782927000 1 connected\n\n[root@node1 ~]#redis-cli -a 123456 --no-auth-warning cluster info\ncluster_state:ok\ncluster_slots_assigned:16384\ncluster_slots_ok:16384\ncluster_slots_pfail:0\ncluster_slots_fail:0\ncluster_known_nodes:6\ncluster_size:3 # 3\u7ec4\u96c6\u7fa4\ncluster_current_epoch:5\ncluster_my_epoch:1\ncluster_stats_messages_ping_sent:2376\ncluster_stats_messages_pong_sent:2450\ncluster_stats_messages_meet_sent:5\ncluster_stats_messages_sent:4831\ncluster_stats_messages_ping_received:2450\ncluster_stats_messages_pong_received:2381\ncluster_stats_messages_received:4831\ntotal_cluster_links_buffer_limit_exceeded:0\n[root@node1 ~]#<\/code><\/pre>\n<h2>11.5 \u5ba2\u6237\u7aef\u8fde\u63a5\u81ea\u52a8\u8ba1\u7b97\u69fd\u4f4d<\/h2>\n<pre><code class=\"language-bash\"># \u6839\u636ekey\u8ba1\u7b97\u69fd\u4f4d\u6240\u5728\u54ea\u4e2amaster\n[root@node1 ~]#redis-cli  -a 123456\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n127.0.0.1:6379&gt; set class m44\n(error) MOVED 7755 10.0.0.41:6379\n\n# \u96c6\u7fa4\u6a21\u5f0f\u8fde\u63a5\uff0c\u4f1a\u81ea\u52a8\u91cd\u5b9a\u5411\u5199\u5165\u5230\u8ba1\u7b97\u7684\u673a\u5668\n[root@node1 ~]#redis-cli  -a 123456 -c\n10.0.0.41:6379&gt; get class\n&quot;m44&quot;\n10.0.0.41:6379&gt; set title ceo\n-&gt; Redirected to slot [2217] located at 10.0.0.40:6379\nOK\n10.0.0.40:6379&gt; set cto hello\n-&gt; Redirected to slot [7151] located at 10.0.0.41:6379\nOK\n10.0.0.41:6379&gt; <\/code><\/pre>\n<h1>12.\u57fa\u4e8eredis7.4\u7684redis cluster\u90e8\u7f72<\/h1>\n<h2>12.1 \u5728\u6240\u6709\u8282\u70b9\u4e0a\u5b89\u88c5redis\u5e76\u542f\u52a8cluster\u529f\u80fd<\/h2>\n<pre><code class=\"language-bash\"># \u5148\u901a\u8fc7\u811a\u672c\u7f16\u8bd1\u5b89\u88c5Redis\uff0c6\u53f0Redis\nnode1 10.0.0.40\nnode2 10.0.0.41\nnode3 10.0.0.42\nnode4 10.0.0.43\nnode5 10.0.0.44\nnode6 10.0.0.45\n\n# \u624b\u52a8\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\nbind 0.0.0.0\nmasterauth 123456 #\u5efa\u8bae\u914d\u7f6e\uff0c\u5426\u5219\u540e\u671f\u7684master\u548cslave\u4e3b\u4ece\u590d\u5236\u65e0\u6cd5\u6210\u529f\uff0c\u8fd8\u9700\u5728\u914d\u7f6e\nrequirepass 123456\ncluster-enabled yes #\u53d6\u6d88\u6b64\u884c\u6ce8\u91ca\uff0c\u5fc5\u987b\u5f00\u542f\u96c6\u7fa4\uff0c\u5f00\u542f\u540eRedis \u8fdb\u7a0b\u4f1a\u6709Cluster\u6807\u8bc6\ncluster-config-file nodes-6379.conf #\u53d6\u6d88\u6b64\u884c\u6ce8\u91ca\uff0c\u6b64\u4e3a\u96c6\u7fa4\u72b6\u6001\u6587\u4ef6\uff0c\u8bb0\u5f55\u4e3b\u4ece\u5173\u7cfb\u5373slot\u8303\u56f4\u4fe1\u606f\uff0c\u7531redis cluster \u96c6\u7fa4\u81ea\u52a8\u521b\u5efa\u548c\u7ef4\u62a4\ncluster-require-full-coverage no #\u9ed8\u8ba4\u503c\u4e3ayes\uff0c\u8bbe\u4e3ano\u53ef\u4ee5\u9632\u6b62\u4e00\u4e2a\u8282\u70b9\u4e0d\u53ef\u7528\u5bfc\u81f4\u6574\u4e2acluster\u4e0d\u53ef\u7528\ncluster-node-timeout #\u8282\u70b9\u4e4b\u95f4\u901a\u4fe1\u8d85\u65f6\u65f6\u95f4\u3002\n\n# \u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u76f8\u5173\u8bbe\u7f6e-6\u53f0\u90fd\u6267\u884c\nsed -i.bak -e &#039;s\/bind 127.0.0.1\/bind 0.0.0.0\/&#039; -e &#039;\/masterauth\/a masterauth 123456&#039; -e &#039;\/# requirepass\/a requirepass 123456&#039; -e &#039;\/# cluster-enabled yes\/a cluster-enabled yes&#039; -e &#039;\/# cluster-config-file nodes-6379.conf\/a cluster-config-file nodes-6379.conf&#039; -e &#039;\/cluster-require-full-coverage yes\/c cluster-require-full-coverage no&#039; \/apps\/redis\/etc\/redis.conf<\/code><\/pre>\n<h2>12.2 \u521b\u5efa\u96c6\u7fa4<\/h2>\n<pre><code class=\"language-bash\"># --cluster-replicas 1 \u610f\u5473\u7740\u6bcf\u4e2a\u4e3b\u8282\u70b9\u4f1a\u6709\u4e00\u4e2a\u4ece\u8282\u70b9\u3002\n[root@node1 ~]#redis-cli -a 123456 --cluster create 10.0.0.40:6379 10.0.0.41:6379 10.0.0.42:6379 10.0.0.43:6379 10.0.0.44:6379 10.0.0.45:6379 --cluster-replicas 1\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Performing hash slots allocation on 6 nodes...\nMaster[0] -&gt; Slots 0 - 5460\nMaster[1] -&gt; Slots 5461 - 10922\nMaster[2] -&gt; Slots 10923 - 16383\nAdding replica 10.0.0.44:6379 to 10.0.0.40:6379\nAdding replica 10.0.0.45:6379 to 10.0.0.41:6379\nAdding replica 10.0.0.43:6379 to 10.0.0.42:6379\n#  M=&gt;master S=&gt;slave\nM: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots:[0-5460] (5461 slots) master\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[5461-10922] (5462 slots) master\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[10923-16383] (5461 slots) master\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nS: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   replicates 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8\nCan I set the above configuration? (type &#039;yes&#039; to accept): yes #\u8f93\u5165yes\u81ea\u52a8\u521b\u5efa\u96c6\u7fa4\n>&gt;&gt; Nodes configuration updated\n>&gt;&gt; Assign a different config epoch to each node\n>&gt;&gt; Sending CLUSTER MEET messages to join the cluster\nWaiting for the cluster to join\n\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.40:6379)\nM: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots:[0-5460] (5461 slots) master #\u5df2\u7ecf\u5206\u914d\u7684\u69fd\u4f4d\n   1 additional replica(s) #\u5206\u4e86\u4e00\u4e2aslave\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots: (0 slots) slave #slave\u6ca1\u6709\u5206\u914d\u69fd\u4f4d\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8 #\u5bf9\u5e94master\u7684ID\uff0c\u4e5f\u5c31\u662f10.0.0.41\nS: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots: (0 slots) slave\n   replicates 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[5461-10922] (5462 slots) master\n   1 additional replica(s)\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[10923-16383] (5461 slots) master\n   1 additional replica(s)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n[root@node1 ~]#\n\n# \u89c2\u5bdf\u4ee5\u4e0a\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u4e09\u7ec4master\/slave\nmaster:10.0.0.40--&gt;slave:10.0.0.44\nmaster:10.0.0.41--&gt;slave:10.0.0.45\nmaster:10.0.0.42--&gt;slave:10.0.0.43\n\n# \u67e5\u770b\u4e3b\u4ece\u72b6\u6001\n[root@node1 ~]#redis-cli -a 123456 info replication\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n# Replication\nrole:master\nconnected_slaves:1\nslave0:ip=10.0.0.44,port=6379,state=online,offset=686,lag=0\nmaster_failover_state:no-failover\nmaster_replid:686dd579b02a3975b8c8df7e4f707dfa612519f1\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:686\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:686\n\n# \u67e5\u770b\u6307\u5b9amaster\u8282\u70b9\u7684slave\u8282\u70b9\u4fe1\u606f\n[root@node3 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736845843217 2 connected 5461-10922\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 slave 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 0 1736845844228 1 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 master - 0 1736845842000 1 connected 0-5460\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736845842208 3 connected\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 myself,master - 0 0 3 connected 10923-16383\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736845841000 2 connected\n[root@node3 ~]#\n\n# \u67e5\u770b\u6307\u5b9amaster\u8282\u70b9\u7684slave\u8282\u70b9\u4fe1\u606f\n[root@node1 ~]#redis-cli -a 123456 cluster slaves 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n1) &quot;12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736845978620 3 connected&quot;\n[root@node1 ~]#\n\n# \u9a8c\u8bc1\u96c6\u7fa4\u7684\u72b6\u6001\n[root@node1 ~]#redis-cli -a 123456 cluster info\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\ncluster_state:ok\ncluster_slots_assigned:16384\ncluster_slots_ok:16384\ncluster_slots_pfail:0\ncluster_slots_fail:0\ncluster_known_nodes:6\ncluster_size:3\ncluster_current_epoch:6\ncluster_my_epoch:1\ncluster_stats_messages_ping_sent:763\ncluster_stats_messages_pong_sent:710\ncluster_stats_messages_sent:1473\ncluster_stats_messages_ping_received:705\ncluster_stats_messages_pong_received:763\ncluster_stats_messages_meet_received:5\ncluster_stats_messages_received:1473\ntotal_cluster_links_buffer_limit_exceeded:0\n[root@node1 ~]#\n\n# \u67e5\u770b\u4efb\u610f\u8282\u70b9\u7684\u96c6\u7fa4\u72b6\u6001\n[root@node1 ~]#redis-cli -a 123456 --cluster info 10.0.0.40:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n10.0.0.40:6379 (334ecb12...) -&gt; 0 keys | 5461 slots | 1 slaves.\n10.0.0.41:6379 (c9b13ad2...) -&gt; 0 keys | 5462 slots | 1 slaves.\n10.0.0.42:6379 (767c6fc6...) -&gt; 0 keys | 5461 slots | 1 slaves.\n[OK] 0 keys in 3 masters.\n0.00 keys per slot on average.\n[root@node1 ~]#\n<\/code><\/pre>\n<h2>12.3 \u6d4b\u8bd5\u5199\u5165\u6570\u636e<\/h2>\n<blockquote>\n<p>\u5728\u8fd0\u884c\u4ee3\u7801\u4e4b\u524d\uff0c\u8bf7\u786e\u4fdd\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5 <code>redis-py-cluster<\/code>\uff1a<\/p>\n<p>pip install redis-py-cluster<\/p>\n<\/blockquote>\n<pre><code class=\"language-bash\">from rediscluster import RedisCluster\n\n# \u5b9a\u4e49 Redis Cluster \u7684\u542f\u52a8\u8282\u70b9\nstartup_nodes = [\n    {&quot;host&quot;: &quot;10.0.0.40&quot;, &quot;port&quot;: 6379},\n    {&quot;host&quot;: &quot;10.0.0.41&quot;, &quot;port&quot;: 6379},\n    {&quot;host&quot;: &quot;10.0.0.42&quot;, &quot;port&quot;: 6379},\n    {&quot;host&quot;: &quot;10.0.0.43&quot;, &quot;port&quot;: 6379},\n    {&quot;host&quot;: &quot;10.0.0.44&quot;, &quot;port&quot;: 6379},\n    {&quot;host&quot;: &quot;10.0.0.45&quot;, &quot;port&quot;: 6379}\n]\n\n# \u521b\u5efa RedisCluster \u8fde\u63a5\nredis_conn = RedisCluster(startup_nodes=startup_nodes, password=&#039;123456&#039;, decode_responses=True)\n\n# \u6279\u91cf\u63d2\u5165\u5e76\u83b7\u53d6\u952e\u503c\u5bf9\nfor i in range(0, 10000):\n    key = &#039;key&#039; + str(i)\n    value = &#039;value&#039; + str(i)\n    redis_conn.set(key, value)  # \u8bbe\u7f6e\u952e\u503c\n    print(f&#039;{key}: {redis_conn.get(key)}&#039;)  # \u8f93\u51fa\u952e\u503c\u5bf9\n<\/code><\/pre>\n<h1>13.cluster\u548c--cluster<\/h1>\n<blockquote>\n<p>\u4e0b\u9762\u8fd9\u4e24\u6761\u547d\u4ee4\u867d\u7136\u90fd\u8ddf Redis Cluster \u76f8\u5173\uff0c\u4f46\u5b83\u4eec\u4ee3\u8868\u4e86<strong>\u4e24\u5957\u4e0d\u540c\u7684\u547d\u4ee4\u4f53\u7cfb<\/strong>\uff0c\u7528\u9014\u548c\u9009\u9879\u4e5f\u4e0d\u5c3d\u76f8\u540c\u3002\u53ef\u4ee5\u7b80\u5355\u5730\u7406\u89e3\u4e3a\uff1a<\/p>\n<ol>\n<li><code>redis-cli cluster help<\/code><br \/>\n\u2014\u2014<strong>\u670d\u52a1\u7aef\u5c42\u9762\u7684 Cluster \u5b50\u547d\u4ee4<\/strong>\u3002\u8fd9\u4e9b\u5b50\u547d\u4ee4\u672c\u8d28\u4e0a\u662f\u5411 Redis \u670d\u52a1\u7aef\u53d1\u9001 <code>CLUSTER &lt;subcommand&gt;<\/code> \u547d\u4ee4\uff0c\u7531 Redis \u670d\u52a1\u7aef\u6267\u884c\uff0c\u5e2e\u52a9\u6211\u4eec\u5728<strong>Redis \u5b9e\u4f8b\u5185\u90e8<\/strong>\u5b8c\u6210\u5404\u79cd\u64cd\u4f5c\uff08\u4f8b\u5982\u67e5\u770b\u8282\u70b9\u4fe1\u606f\u3001\u8bbe\u7f6e slots \u7b49\uff09\u3002<\/li>\n<li><code>redis-cli --cluster help<\/code><br \/>\n\u2014\u2014<strong>\u5ba2\u6237\u7aef\u5c42\u9762\u7684 Cluster Manager \u5b50\u547d\u4ee4<\/strong>\u3002\u8fd9\u662f Redis \u547d\u4ee4\u884c\u5de5\u5177(<code>redis-cli<\/code>)\u63d0\u4f9b\u7684\u4e00\u4e2a<strong>\u96c6\u7fa4\u7ba1\u7406\u529f\u80fd<\/strong>\uff0c\u901a\u8fc7\u5b83\u53ef\u4ee5\u5728\u5ba2\u6237\u7aef\u5bf9\u591a\u4e2a\u8282\u70b9\u8fdb\u884c\u7edf\u4e00\u7ba1\u7406\u3001\u68c0\u67e5\u3001rebalance\u3001reshard \u7b49\u9ad8\u5c42\u6b21\u64cd\u4f5c\uff0c\u800c\u4e0d\u9700\u8981\u9010\u8282\u70b9\u53bb\u6267\u884c\u76f8\u5e94\u547d\u4ee4\u3002<\/li>\n<\/ol>\n<\/blockquote>\n<pre><code class=\"language-bash\">[root@node1 ~]#redis-cli -a 123456 --cluster help\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\nCluster Manager Commands:\n  create         host1:port1 ... hostN:portN\n                 --cluster-replicas &lt;arg&gt;\n  check          &lt;host:port&gt; or &lt;host&gt; &lt;port&gt; - separated by either colon or space\n                 --cluster-search-multiple-owners\n  info           &lt;host:port&gt; or &lt;host&gt; &lt;port&gt; - separated by either colon or space\n  fix            &lt;host:port&gt; or &lt;host&gt; &lt;port&gt; - separated by either colon or space\n                 --cluster-search-multiple-owners\n                 --cluster-fix-with-unreachable-masters\n  reshard        &lt;host:port&gt; or &lt;host&gt; &lt;port&gt; - separated by either colon or space\n                 --cluster-from &lt;arg&gt;\n                 --cluster-to &lt;arg&gt;\n                 --cluster-slots &lt;arg&gt;\n                 --cluster-yes\n                 --cluster-timeout &lt;arg&gt;\n                 --cluster-pipeline &lt;arg&gt;\n                 --cluster-replace\n  rebalance      &lt;host:port&gt; or &lt;host&gt; &lt;port&gt; - separated by either colon or space\n                 --cluster-weight &lt;node1=w1...nodeN=wN&gt;\n                 --cluster-use-empty-masters\n                 --cluster-timeout &lt;arg&gt;\n                 --cluster-simulate\n                 --cluster-pipeline &lt;arg&gt;\n                 --cluster-threshold &lt;arg&gt;\n                 --cluster-replace\n  add-node       new_host:new_port existing_host:existing_port\n                 --cluster-slave\n                 --cluster-master-id &lt;arg&gt;\n  del-node       host:port node_id\n  call           host:port command arg arg .. arg\n                 --cluster-only-masters\n                 --cluster-only-replicas\n  set-timeout    host:port milliseconds\n  import         host:port\n                 --cluster-from &lt;arg&gt;\n                 --cluster-from-user &lt;arg&gt;\n                 --cluster-from-pass &lt;arg&gt;\n                 --cluster-from-askpass\n                 --cluster-copy\n                 --cluster-replace\n  backup         host:port backup_directory\n  help\n\nFor check, fix, reshard, del-node, set-timeout, info, rebalance, call, import, backup you can specify the host and port of any working node in the cluster.\n\nCluster Manager Options:\n  --cluster-yes  Automatic yes to cluster commands prompts\n\n[root@node1 ~]#<\/code><\/pre>\n<pre><code class=\"language-bash\">[root@node1 ~]#redis-cli -a 123456 cluster help\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n 1) CLUSTER &lt;subcommand&gt; [&lt;arg&gt; [value] [opt] ...]. Subcommands are:\n 2) COUNTKEYSINSLOT &lt;slot&gt;\n 3)     Return the number of keys in &lt;slot&gt;.\n 4) GETKEYSINSLOT &lt;slot&gt; &lt;count&gt;\n 5)     Return key names stored by current node in a slot.\n 6) INFO\n 7)     Return information about the cluster.\n 8) KEYSLOT &lt;key&gt;\n 9)     Return the hash slot for &lt;key&gt;.\n10) MYID\n11)     Return the node id.\n12) MYSHARDID\n13)     Return the node&#039;s shard id.\n14) NODES\n15)     Return cluster configuration seen by node. Output format:\n16)     &lt;id&gt; &lt;ip:port@bus-port[,hostname]&gt; &lt;flags&gt; &lt;master&gt; &lt;pings&gt; &lt;pongs&gt; &lt;epoch&gt; &lt;link&gt; &lt;slot&gt; ...\n17) REPLICAS &lt;node-id&gt;\n18)     Return &lt;node-id&gt; replicas.\n19) SLOTS\n20)     Return information about slots range mappings. Each range is made of:\n21)     start, end, master and replicas IP addresses, ports and ids\n22) SHARDS\n23)     Return information about slot range mappings and the nodes associated with them.\n24) ADDSLOTS &lt;slot&gt; [&lt;slot&gt; ...]\n25)     Assign slots to current node.\n26) ADDSLOTSRANGE &lt;start slot&gt; &lt;end slot&gt; [&lt;start slot&gt; &lt;end slot&gt; ...]\n27)     Assign slots which are between &lt;start-slot&gt; and &lt;end-slot&gt; to current node.\n28) BUMPEPOCH\n29)     Advance the cluster config epoch.\n30) COUNT-FAILURE-REPORTS &lt;node-id&gt;\n31)     Return number of failure reports for &lt;node-id&gt;.\n32) DELSLOTS &lt;slot&gt; [&lt;slot&gt; ...]\n33)     Delete slots information from current node.\n34) DELSLOTSRANGE &lt;start slot&gt; &lt;end slot&gt; [&lt;start slot&gt; &lt;end slot&gt; ...]\n35)     Delete slots information which are between &lt;start-slot&gt; and &lt;end-slot&gt; from current node.\n36) FAILOVER [FORCE|TAKEOVER]\n37)     Promote current replica node to being a master.\n38) FORGET &lt;node-id&gt;\n39)     Remove a node from the cluster.\n40) FLUSHSLOTS\n41)     Delete current node own slots information.\n42) MEET &lt;ip&gt; &lt;port&gt; [&lt;bus-port&gt;]\n43)     Connect nodes into a working cluster.\n44) REPLICATE &lt;node-id&gt;\n45)     Configure current node as replica to &lt;node-id&gt;.\n46) RESET [HARD|SOFT]\n47)     Reset current node (default: soft).\n48) SET-CONFIG-EPOCH &lt;epoch&gt;\n49)     Set config epoch of current node.\n50) SETSLOT &lt;slot&gt; (IMPORTING &lt;node-id&gt;|MIGRATING &lt;node-id&gt;|STABLE|NODE &lt;node-id&gt;)\n51)     Set slot state.\n52) SAVECONFIG\n53)     Force saving cluster configuration on disk.\n54) LINKS\n55)     Return information about all network links between this node and its peers.\n56)     Output format is an array where each array element is a map containing attributes of a link\n57) HELP\n58)     Print this help.\n<\/code><\/pre>\n<hr \/>\n<h2>\u4e00\u3001<code>redis-cli cluster help<\/code> \u53ca\u5176\u5b50\u547d\u4ee4\u8be6\u89e3<\/h2>\n<p>\u5f53\u6211\u4eec\u6267\u884c\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -a 123456 cluster help<\/code><\/pre>\n<p>\uff08<code>-a 123456<\/code> \u53ea\u662f\u6307\u5b9a\u4e86\u8bbf\u95ee Redis \u7684\u5bc6\u7801\uff0c\u4e0e\u4f60\u8981\u6267\u884c\u7684 <code>CLUSTER HELP<\/code> \u547d\u4ee4\u672c\u8eab\u65e0\u5173\uff09<\/p>\n<p>\u8fd4\u56de\u7684\u5185\u5bb9\u662f Redis \u670d\u52a1\u7aef\u5bf9\u5916\u66b4\u9732\u7684<strong>Cluster \u5b50\u547d\u4ee4<\/strong>\u5217\u8868\uff0c\u5373 <code>CLUSTER &lt;subcommand&gt;<\/code>\u3002\u4e0b\u9762\u5bf9\u5176\u8fdb\u884c\u7b80\u8981\u8bf4\u660e\uff08\u6309\u7167\u5b83\u663e\u793a\u7684\u987a\u5e8f\uff09\uff1a<\/p>\n<ol>\n<li><strong>COUNTKEYSINSLOT <code>&lt;slot&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u6307\u5b9a <code>&lt;slot&gt;<\/code> \u4e2d\u5305\u542b\u7684 key \u7684\u6570\u91cf\uff08\u4ec5\u5f53\u524d\u8282\u70b9\u5b58\u50a8\u7684\u90e8\u5206\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER COUNTKEYSINSLOT 1234<\/code><\/li>\n<li><strong>\u573a\u666f<\/strong>\uff1a\u5f53\u4f60\u60f3\u77e5\u9053\u67d0\u4e2a slot \u4e0a\u6709\u591a\u5c11 key\uff0c\u5c24\u5176\u5728\u505a reshard \u4e4b\u524d\uff0c\u60f3\u5148\u786e\u8ba4\u6570\u636e\u91cf\u662f\u591a\u5c11\u65f6\u6709\u7528\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>GETKEYSINSLOT <code>&lt;slot&gt;<\/code> <code>&lt;count&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u5f53\u524d\u8282\u70b9\u5728\u6307\u5b9a <code>&lt;slot&gt;<\/code> \u4e2d\u5b58\u50a8\u7684\u6700\u591a <code>&lt;count&gt;<\/code> \u4e2a key \u540d\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER GETKEYSINSLOT 1234 10<\/code><\/li>\n<li><strong>\u573a\u666f<\/strong>\uff1a\u4e00\u822c\u914d\u5408 <code>MIGRATE<\/code> \u547d\u4ee4\u8fdb\u884c\u8fc1\u79fb\u65f6\uff0c\u9700\u5148\u627e\u5230\u5c5e\u4e8e\u67d0\u4e2a slot \u7684\u5177\u4f53 key\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>INFO<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u96c6\u7fa4\u7684\u603b\u4f53\u4fe1\u606f\uff0c\u5305\u62ec\u96c6\u7fa4\u72b6\u6001\uff08ok \u6216 fail\uff09\u3001\u5f53\u524d\u96c6\u7fa4\u914d\u7f6e\u7eaa\u5143\uff08epoch\uff09\u7b49\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER INFO<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>KEYSLOT <code>&lt;key&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8ba1\u7b97\u67d0\u4e2a key \u6240\u5bf9\u5e94\u7684 hash slot \u503c\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER KEYSLOT mykey<\/code><\/li>\n<li><strong>\u573a\u666f<\/strong>\uff1a\u7528\u4e8e\u6d4b\u8bd5\u6216\u9a8c\u8bc1\u67d0\u4e2a key \u4f1a\u88ab\u8def\u7531\u5230\u54ea\u4e2a slot\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>MYID<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u5f53\u524d Redis \u8282\u70b9\u5728\u96c6\u7fa4\u4e2d\u7684 node id\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER MYID<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>MYSHARDID<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u5f53\u524d\u8282\u70b9\u6240\u5728\u7684 shard \u7684 ID\uff08Redis 7.0+ \u51fa\u73b0\uff0c\u5185\u90e8\u6982\u5ff5\u7c7b\u4f3c node id\uff0c\u4e3b\u8981\u7528\u4e8e\u5206\u7247\u6807\u8bc6\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER MYSHARDID<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>NODES<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u5f53\u524d\u8282\u70b9\u6240\u770b\u5230\u7684\u6574\u4e2a\u96c6\u7fa4\u62d3\u6251\u914d\u7f6e\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER NODES<\/code><\/li>\n<li><strong>\u8fd4\u56de\u683c\u5f0f<\/strong>\uff1a\u591a\u884c\u6587\u672c\uff0c\u6bcf\u4e00\u884c\u4ee3\u8868\u4e00\u4e2a\u8282\u70b9\u7684\u4fe1\u606f\uff0c\u5305\u62ec\u5176 ID\u3001IP\u3001\u7aef\u53e3\u3001flags\u3001master\/slave \u5173\u7cfb\u7b49\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>REPLICAS <code>&lt;node-id&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8fd4\u56de\u6307\u5b9a <code>&lt;node-id&gt;<\/code> \u7684\u6240\u6709\u4ece\u8282\u70b9\u4fe1\u606f\uff08\u76f8\u5f53\u4e8e\u8001\u7248\u672c\u547d\u4ee4 <code>SLAVES &lt;node-id&gt;<\/code>\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER REPLICAS 07c37dfeb2352f2f2bae<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>SLOTS<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u4ee5\u533a\u95f4\u5f62\u5f0f\u8fd4\u56de\u96c6\u7fa4\u4e2d\u6240\u6709 slot \u7684\u5206\u914d\u4fe1\u606f\uff0c\u5305\u62ec\u6bcf\u4e2a\u533a\u95f4\u6709\u54ea\u4e9b\u8282\u70b9\u8d1f\u8d23\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER SLOTS<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>SHARDS<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1aRedis 7.0+ \u65b0\u589e\u547d\u4ee4\uff0c\u4e0e <code>SLOTS<\/code> \u7c7b\u4f3c\uff0c\u4f46\u4f1a\u8fd4\u56de\u66f4\u8be6\u7ec6\u7684\u8282\u70b9\u4fe1\u606f\uff08\u6309 shard \u5206\u7ec4\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER SHARDS<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>ADDSLOTS <code>&lt;slot&gt; [&lt;slot&gt; ...]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u5c06\u6307\u5b9a\u7684 slot \u96c6\u5408\u5206\u914d\u7ed9<strong>\u5f53\u524d\u8282\u70b9<\/strong>\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER ADDSLOTS 1 2 3<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>ADDSLOTSRANGE <code>&lt;start slot&gt; &lt;end slot&gt; [&lt;start slot&gt; &lt;end slot&gt; ...]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u4e00\u6b21\u6027\u5c06\u8fde\u7eed\u533a\u95f4\u7684 slot \u5206\u914d\u7ed9<strong>\u5f53\u524d\u8282\u70b9<\/strong>\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER ADDSLOTSRANGE 0 1000 1001 2000<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>BUMPEPOCH<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u624b\u52a8\u8ba9\u5f53\u524d\u96c6\u7fa4\u7684\u914d\u7f6e\u7eaa\u5143\uff08epoch\uff09+1\uff0c\u901a\u5e38\u7528\u4e8e\u6d4b\u8bd5\u6216\u7279\u6b8a\u60c5\u51b5\u4e0b\u89e6\u53d1\u96c6\u7fa4\u65b0\u7684\u914d\u7f6e\u66f4\u65b0\u6d41\u7a0b\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER BUMPEPOCH<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>COUNT-FAILURE-REPORTS <code>&lt;node-id&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u67e5\u770b\u6709\u591a\u5c11\u8282\u70b9\u62a5\u544a\u4e86\u6307\u5b9a\u8282\u70b9\u7684\u5931\u8d25\uff08\u6545\u969c\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER COUNT-FAILURE-REPORTS 07c37dfeb2352f2f2bae<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>DELSLOTS <code>&lt;slot&gt; [&lt;slot&gt; ...]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u4ece\u5f53\u524d\u8282\u70b9\u4e2d\u5220\u9664\u8fd9\u4e9b slot \u7684\u5f52\u5c5e\u5173\u7cfb\uff08\u8ba9\u5b83\u5904\u4e8e\u65e0\u4e3b\u72b6\u6001\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER DELSLOTS 1 2 3<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>DELSLOTSRANGE <code>&lt;start slot&gt; &lt;end slot&gt; [&lt;start slot&gt; &lt;end slot&gt; ...]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u6279\u91cf\u5220\u9664\u6307\u5b9a\u533a\u95f4\u7684 slot \u5f52\u5c5e\u5173\u7cfb\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER DELSLOTSRANGE 0 1000 1001 2000<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>FAILOVER <code>[FORCE|TAKEOVER]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u5728\u590d\u5236\u7ed3\u6784\uff08\u4e3b\u4ece\u7ed3\u6784\uff09\u4e2d\uff0c\u4f7f\u5f53\u524d\u8282\u70b9\u4ece\u4ece\u8282\u70b9\u664b\u5347\u4e3a\u4e3b\u8282\u70b9\u3002<\/li>\n<li><strong>FORCE<\/strong>\uff1a\u5f3a\u5236\u6545\u969c\u8f6c\u79fb\uff0c\u54ea\u6015\u4e3b\u8282\u70b9\u5728\u7ebf\uff1b<strong>TAKEOVER<\/strong>\uff1a\u66f4\u9ad8\u4f18\u5148\u7ea7\uff0c\u4f1a\u5ffd\u7565\u90e8\u5206\u68c0\u67e5\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER FAILOVER FORCE<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>FORGET <code>&lt;node-id&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u4ece\u96c6\u7fa4\u4fe1\u606f\u4e2d\u201c\u9057\u5fd8\u201d\u67d0\u4e2a\u8282\u70b9\uff0c\u8ba9\u8be5\u8282\u70b9\u4ece\u96c6\u7fa4\u62d3\u6251\u4e2d\u79fb\u9664\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER FORGET 07c37dfeb2352f2f2bae<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>FLUSHSLOTS<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u6e05\u7a7a\u5f53\u524d\u8282\u70b9\u5bf9\u6240\u6709 slot \u7684\u5f52\u5c5e\u4fe1\u606f\uff0c\u4f46\u5e76\u4e0d\u4f1a\u5bf9\u96c6\u7fa4\u5176\u4ed6\u8282\u70b9\u7684\u89c6\u56fe\u9020\u6210\u5f71\u54cd\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER FLUSHSLOTS<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>MEET <code>&lt;ip&gt; &lt;port&gt; [&lt;bus-port&gt;]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8ba9\u5f53\u524d\u8282\u70b9\u5c1d\u8bd5\u4e0e\u6307\u5b9a IP \u548c\u7aef\u53e3\u7684\u8282\u70b9\u5efa\u7acb\u96c6\u7fa4\u63e1\u624b\uff0c\u4f7f\u5176\u52a0\u5165\u96c6\u7fa4\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER MEET 192.168.1.100 7001<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>REPLICATE <code>&lt;node-id&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u5c06\u5f53\u524d\u8282\u70b9\u8bbe\u7f6e\u4e3a\u6307\u5b9a\u8282\u70b9\u7684\u4ece\u8282\u70b9\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER REPLICATE 07c37dfeb2352f2f2bae<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>RESET <code>[HARD|SOFT]<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u91cd\u7f6e\u5f53\u524d\u8282\u70b9\u7684\u96c6\u7fa4\u72b6\u6001\u3002<\/li>\n<li><strong>SOFT<\/strong>\uff1a\u4fdd\u7559\u90e8\u5206\u96c6\u7fa4\u4fe1\u606f\uff0c\u53ea\u5220\u9664 slots \u7b49\u3002<\/li>\n<li><strong>HARD<\/strong>\uff1a\u5f7b\u5e95\u91cd\u7f6e\uff0c\u6e05\u9664\u6240\u6709\u96c6\u7fa4\u76f8\u5173\u4fe1\u606f\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER RESET HARD<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>SET-CONFIG-EPOCH <code>&lt;epoch&gt;<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u624b\u52a8\u8bbe\u7f6e\u5f53\u524d\u8282\u70b9\u7684\u914d\u7f6e\u7eaa\u5143\u503c\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER SET-CONFIG-EPOCH 99<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>SETSLOT <code>&lt;slot&gt;<\/code> <code>(IMPORTING &lt;node-id&gt; | MIGRATING &lt;node-id&gt; | STABLE | NODE &lt;node-id&gt;)<\/code><\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8bbe\u7f6e\u6307\u5b9a slot \u7684\u72b6\u6001\uff0c\u4f8b\u5982\u6807\u8bb0\u4e3a\u8fc1\u5165\u4e2d\u3001\u8fc1\u51fa\u4e2d\uff0c\u6216\u6307\u5b9a\u65b0\u7684\u5f52\u5c5e\u8282\u70b9\u7b49\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER SETSLOT 1234 MIGRATING 07c37dfeb2352f2f2bae<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>SAVECONFIG<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u5f3a\u5236\u4fdd\u5b58\u96c6\u7fa4\u914d\u7f6e\u5230\u672c\u5730\u78c1\u76d8\uff08\u901a\u5e38\u662f <code>nodes.conf<\/code> \u6587\u4ef6\uff09\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER SAVECONFIG<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>LINKS<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u67e5\u770b\u5f53\u524d\u8282\u70b9\u4e0e\u5176\u4ed6\u8282\u70b9\u4e4b\u95f4\u7684\u7f51\u7edc\u8fde\u63a5\u8be6\u7ec6\u4fe1\u606f\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>CLUSTER LINKS<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>HELP<\/strong>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u6253\u5370\u51fa\u6240\u6709\u53ef\u7528\u7684 <code>CLUSTER &lt;subcommand&gt;<\/code> \u547d\u4ee4\u8bf4\u660e\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u5c0f\u7ed3\uff1a<br \/>\n<strong><code>cluster help<\/code> \u5217\u51fa\u7684\u8fd9\u4e9b\u547d\u4ee4\u90fd\u5c5e\u4e8e\u670d\u52a1\u7aef\u5185\u7f6e\u7684\u5b50\u547d\u4ee4<\/strong>\uff0c\u5b83\u4eec\u662f\u9488\u5bf9\u5f53\u524d\u8fde\u63a5\u7684\u8fd9\u4e2a Redis \u8282\u70b9\uff0c\u6765\u67e5\u770b\u6216\u64cd\u4f5c\u96c6\u7fa4\u4fe1\u606f\u7684\u3002\u6bd4\u5982 <code>ADDSLOTS<\/code>\/<code>DELSLOTS<\/code> \u5c31\u662f\u544a\u8bc9\u201c\u5f53\u524d\u8282\u70b9\u201d\u53bb<strong>\u58f0\u660e<\/strong>\u6216<strong>\u91ca\u653e<\/strong>\u67d0\u4e9b slots \u7684\u5f52\u5c5e\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u4e8c\u3001<code>redis-cli --cluster help<\/code> \u53ca\u5176\u5b50\u547d\u4ee4\u8be6\u89e3<\/h2>\n<p>\u5f53\u6211\u4eec\u6267\u884c\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -a 123456 --cluster help<\/code><\/pre>\n<p>\u540c\u6837\u4f1a\u51fa\u73b0\u4e00\u7cfb\u5217\u201cCluster Manager\u201d\u547d\u4ee4\u3002\u8fd9\u4e9b\u547d\u4ee4\u5e76\u4e0d\u662f\u7b80\u5355\u7684 <code>CLUSTER &lt;subcommand&gt;<\/code>\uff0c\u800c\u662f<strong>Redis CLI \u5de5\u5177\u5bf9\u96c6\u7fa4\u7ba1\u7406\u5c01\u88c5\u7684\u4e00\u5957\u529f\u80fd<\/strong>\u3002\u5b83\u4f1a\u5728\u5ba2\u6237\u7aef\u8dd1\u4e00\u4e9b\u903b\u8f91\uff0c\u7136\u540e\u5bf9\u591a\u4e2a\u8282\u70b9\u53d1\u9001\u76f8\u5e94\u7684 Redis \u547d\u4ee4\uff0c\u4ece\u800c\u5e2e\u6211\u4eec\u5b8c\u6210\u521b\u5efa\u96c6\u7fa4\u3001\u68c0\u67e5\u6216\u4fee\u590d\u96c6\u7fa4\u7b49\u9ad8\u7ea7\u64cd\u4f5c\u3002<\/p>\n<p>\u5e38\u89c1\u7684\u5b50\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n<ol>\n<li>\n<p><strong>create<\/strong> <code>host1:port1 ... hostN:portN<\/code><\/p>\n<ul>\n<li>\n<p><strong>\u529f\u80fd<\/strong>\uff1a\u5728\u7ed9\u5b9a\u7684\u82e5\u5e72 Redis \u5b9e\u4f8b\u4e4b\u95f4\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u96c6\u7fa4\uff0c\u5e76\u8fdb\u884c slot \u5206\u914d\u3002<\/p>\n<\/li>\n<li>\n<p>\u5e38\u89c1\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>--cluster-replicas &lt;arg&gt;<\/code>\uff1a\u6307\u5b9a\u6bcf\u4e2a\u4e3b\u8282\u70b9\u5206\u914d\u591a\u5c11\u4ece\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u7528\u6cd5\u793a\u4f8b\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 \\\n--cluster-replicas 1<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>check<\/strong> <code>&lt;host:port&gt;<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u68c0\u67e5\u6307\u5b9a\u8282\u70b9\u6240\u5728\u7684\u96c6\u7fa4\u662f\u5426\u5b58\u5728\u914d\u7f6e\u6216\u6570\u636e\u5f02\u5e38\uff0c\u4f8b\u5982 slot \u51b2\u7a81\u3001\u4e3b\u4ece\u540c\u6b65\u5f02\u5e38\u7b49\u3002<\/li>\n<li><strong>\u53ef\u9009<\/strong>\uff1a<code>--cluster-search-multiple-owners<\/code>\uff1a\u5f53\u5b58\u5728\u591a\u4e2a\u8282\u70b9\u540c\u65f6\u6301\u6709\u76f8\u540c slot \u65f6\uff0c\u5c1d\u8bd5\u81ea\u52a8\u68c0\u6d4b\u5e76\u663e\u793a\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>info<\/strong> <code>&lt;host:port&gt;<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u663e\u793a\u6307\u5b9a\u8282\u70b9\u6240\u5728\u96c6\u7fa4\u7684\u6574\u4f53\u4fe1\u606f\uff0c\u5305\u62ec\u4e3b\u4ece\u8282\u70b9\u5206\u5e03\u3001slot \u5206\u914d\u3001\u53ef\u80fd\u7684\u95ee\u9898\u7b49\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster info 127.0.0.1:7001<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>fix<\/strong> <code>&lt;host:port&gt;<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u9488\u5bf9\u68c0\u67e5\u51fa\u7684\u95ee\u9898\u5c1d\u8bd5\u8fdb\u884c\u4fee\u590d\uff0c\u6bd4\u5982\u4fee\u6b63 slot \u7684 owner\u3001\u6e05\u7406\u4e0d\u6b63\u786e\u7684\u914d\u7f6e\u7b49\u3002<\/li>\n<li>\u5e38\u89c1\u9009\u9879\uff1a\n<ul>\n<li><code>--cluster-search-multiple-owners<\/code>\uff1a\u68c0\u6d4b\u5e76\u5c1d\u8bd5\u4fee\u590d\u591a\u4e2a\u8282\u70b9\u540c\u65f6\u62e5\u6709\u540c\u4e00 slot \u7684\u51b2\u7a81\u95ee\u9898\u3002<\/li>\n<li><code>--cluster-fix-with-unreachable-masters<\/code>\uff1a\u5373\u4f7f\u4e3b\u8282\u70b9\u65e0\u6cd5\u8bbf\u95ee\uff0c\u4e5f\u8981\u5c1d\u8bd5\u8fdb\u884c\u4fee\u590d\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster fix 127.0.0.1:7001 --cluster-search-multiple-owners<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>reshard<\/strong> <code>&lt;host:port&gt;<\/code><\/p>\n<ul>\n<li>\n<p><strong>\u529f\u80fd<\/strong>\uff1a\u5bf9\u96c6\u7fa4\u4e2d\u7684 slot \u8fdb\u884c\u91cd\u65b0\u5206\u914d\uff08\u624b\u52a8\u6216\u4ea4\u4e92\u5f0f\uff09\uff0c\u5b9e\u73b0\u6570\u636e\u5728\u5404\u8282\u70b9\u4e4b\u95f4\u91cd\u65b0\u5747\u8861\u3002<\/p>\n<\/li>\n<li>\n<p>\u5e38\u89c1\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>--cluster-from &lt;node id&gt;<\/code>\uff1a\u6307\u5b9a\u4ece\u54ea\u4e2a\u8282\u70b9\u6216\u8282\u70b9\u96c6\u5408\u4e2d\u62bd\u53d6 slot\u3002<\/li>\n<li><code>--cluster-to &lt;node id&gt;<\/code>\uff1a\u6307\u5b9a slot \u5c06\u8fc1\u79fb\u5230\u54ea\u4e2a\u8282\u70b9\u3002<\/li>\n<li><code>--cluster-slots &lt;\u4e2a\u6570&gt;<\/code>\uff1a\u8981\u8fc1\u79fb\u591a\u5c11\u4e2a slot\u3002<\/li>\n<li><code>--cluster-yes<\/code>\uff1a\u81ea\u52a8\u786e\u8ba4(\u4e0d\u518d\u63d0\u793a\u4ea4\u4e92)\u3002<\/li>\n<li><code>--cluster-timeout &lt;arg&gt;<\/code>\uff1a\u8fc1\u79fb\u8d85\u65f6\u8bbe\u7f6e\u3002<\/li>\n<li><code>--cluster-pipeline &lt;arg&gt;<\/code>\uff1a\u8fc1\u79fb\u65f6\u4f7f\u7528 pipeline \u53d1\u9001\u591a\u5c11\u4e2a key\u3002<\/li>\n<li><code>--cluster-replace<\/code>\uff1a\u82e5\u76ee\u6807\u8282\u70b9\u5df2\u62e5\u6709\u8be5 slot \u7684\u4fe1\u606f\uff0c\u4e5f\u5f3a\u884c\u66ff\u6362\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u7528\u6cd5\u793a\u4f8b\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli --cluster reshard 127.0.0.1:7001 \\\n--cluster-from 07c37dfeb2352f2f2bae \\\n--cluster-to 09a49dfeb2352f2f2cde \\\n--cluster-slots 100 \\\n--cluster-yes<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>rebalance<\/strong> <code>&lt;host:port&gt;<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u5728\u96c6\u7fa4\u4e2d\u6267\u884c\u81ea\u52a8\u8d1f\u8f7d\u5747\u8861\uff0c\u8ba9\u5404\u8282\u70b9\u7684 slot \u6570\u91cf\u5927\u4f53\u8d8b\u4e8e\u5e73\u5747\u3002<\/li>\n<li>\u5e38\u89c1\u9009\u9879\uff1a\n<ul>\n<li><code>--cluster-weight &lt;node1=w1...nodeN=wN&gt;<\/code>\uff1a\u7ed9\u8282\u70b9\u8bbe\u7f6e\u201c\u6743\u91cd\u201d\uff0c\u4f7f rebalance \u65f6\u5e76\u975e\u7edd\u5bf9\u5e73\u5747\uff0c\u800c\u662f\u6309\u6743\u91cd\u5206\u914d slot\u3002<\/li>\n<li><code>--cluster-use-empty-masters<\/code>\uff1a\u5728 rebalance \u65f6\u4e5f\u4f1a\u8003\u8651\u90a3\u4e9b\u76ee\u524d\u6ca1\u6709 slots \u7684\u4e3b\u8282\u70b9\u3002<\/li>\n<li><code>--cluster-timeout &lt;arg&gt;<\/code>\uff1a\u64cd\u4f5c\u8d85\u65f6\u3002<\/li>\n<li><code>--cluster-simulate<\/code>\uff1a\u53ea\u6a21\u62df\u64cd\u4f5c\uff0c\u5e76\u4e0d\u771f\u6b63\u6267\u884c\u3002<\/li>\n<li><code>--cluster-pipeline &lt;arg&gt;<\/code>\uff1a\u8fc1\u79fb key \u65f6\u7684 pipeline \u5927\u5c0f\u3002<\/li>\n<li><code>--cluster-threshold &lt;arg&gt;<\/code>\uff1a\u53ea\u6709\u5f53\u8282\u70b9 slot \u6570\u5dee\u5f02\u8d85\u8fc7\u4e00\u5b9a\u9608\u503c\u624d\u8fdb\u884c\u8fc1\u79fb\u3002<\/li>\n<li><code>--cluster-replace<\/code>\uff1a\u8fc1\u79fb\u4e2d\u5982\u9047 slot \u51b2\u7a81\u5141\u8bb8\u66ff\u6362\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster rebalance 127.0.0.1:7001 --cluster-use-empty-masters --cluster-yes<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>add-node<\/strong> <code>new_host:new_port existing_host:existing_port<\/code><\/p>\n<ul>\n<li>\n<p><strong>\u529f\u80fd<\/strong>\uff1a\u5411\u5df2\u7ecf\u5728\u8fd0\u884c\u7684\u96c6\u7fa4\u4e2d\u65b0\u589e\u52a0\u4e00\u4e2a\u8282\u70b9\uff08\u53ef\u4ee5\u6307\u5b9a\u662f\u4f5c\u4e3a\u4ece\u8282\u70b9\uff0c\u6216\u8005\u8ba9\u5b83\u81ea\u5df1\u6210\u4e3a\u4e3b\u8282\u70b9\uff09\u3002<\/p>\n<\/li>\n<li>\n<p>\u5e38\u89c1\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>--cluster-slave<\/code>\uff1a\u4ee5\u4ece\u8282\u70b9\u7684\u89d2\u8272\u52a0\u5165\u96c6\u7fa4\u3002<\/li>\n<li><code>--cluster-master-id &lt;arg&gt;<\/code>\uff1a\u5982\u679c\u8981\u4f5c\u4e3a\u4ece\u8282\u70b9\uff0c\u6307\u660e\u5b83\u7684\u4e3b\u8282\u70b9 ID\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u7528\u6cd5\u793a\u4f8b\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli --cluster add-node 192.168.1.100:7004 192.168.1.100:7001 \\\n--cluster-slave \\\n--cluster-master-id 07c37dfeb2352f2f2bae<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>del-node<\/strong> <code>host:port node_id<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u4ece\u96c6\u7fa4\u62d3\u6251\u4e2d\u5220\u9664\u6307\u5b9a node_id \u7684\u8282\u70b9\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster del-node 127.0.0.1:7001 07c37dfeb2352f2f2bae<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>call<\/strong> <code>host:port command arg arg .. arg<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u5bf9\u96c6\u7fa4\u7684\u6240\u6709\u8282\u70b9\uff08\u6216\u53ea\u5bf9\u4e3b\u8282\u70b9\/\u4ece\u8282\u70b9\uff09\u6267\u884c\u4e00\u4e2a\u81ea\u5b9a\u4e49\u547d\u4ee4\u3002<\/li>\n<li>\u5e38\u89c1\u9009\u9879\uff1a\n<ul>\n<li><code>--cluster-only-masters<\/code>\uff1a\u53ea\u5bf9\u4e3b\u8282\u70b9\u6267\u884c\u3002<\/li>\n<li><code>--cluster-only-replicas<\/code>\uff1a\u53ea\u5bf9\u4ece\u8282\u70b9\u6267\u884c\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster call 127.0.0.1:7001 CONFIG GET maxmemory --cluster-only-masters<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>set-timeout<\/strong> <code>host:port milliseconds<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u8bbe\u7f6e\u96c6\u7fa4\u8282\u70b9\u7684 <code>cluster-node-timeout<\/code> \u53c2\u6570\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster set-timeout 127.0.0.1:7001 2000<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>import<\/strong> <code>host:port<\/code><\/p>\n<ul>\n<li>\n<p><strong>\u529f\u80fd<\/strong>\uff1a\u5c06\u5355\u8282\u70b9 Redis \u7684\u6570\u636e\u5bfc\u5165\u5230\u6307\u5b9a\u7684\u96c6\u7fa4\u8282\u70b9\u4e2d\u3002<\/p>\n<\/li>\n<li>\n<p>\u5e38\u89c1\u9009\u9879\uff1a<\/p>\n<ul>\n<li><code>--cluster-from &lt;arg&gt;<\/code>\uff1a\u6e90 Redis \u7684\u5730\u5740\u3002<\/li>\n<li><code>--cluster-from-user &lt;arg&gt;<\/code> \/ <code>--cluster-from-pass &lt;arg&gt;<\/code> \/ <code>--cluster-from-askpass<\/code>\uff1a\u6307\u5b9a\u6e90 Redis \u7684\u8ba4\u8bc1\u65b9\u5f0f\u3002<\/li>\n<li><code>--cluster-copy<\/code>\uff1a\u590d\u5236\u6570\u636e\u800c\u4e0d\u662f\u8fc1\u79fb\u6570\u636e\u3002<\/li>\n<li><code>--cluster-replace<\/code>\uff1a\u5982 slot \u4e2d\u5df2\u6709 key \u662f\u5426\u76f4\u63a5\u8986\u76d6\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u7528\u6cd5\u793a\u4f8b\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli --cluster import 127.0.0.1:7001 \\\n--cluster-from 127.0.0.1:6379 \\\n--cluster-from-pass 123456 \\\n--cluster-copy \\\n--cluster-replace<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>backup<\/strong> <code>host:port backup_directory<\/code><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u4ece\u96c6\u7fa4\u4e2d\u6bcf\u4e2a\u8282\u70b9\u83b7\u53d6 RDB \u5feb\u7167\u5e76\u4fdd\u5b58\u5230\u672c\u5730\u6307\u5b9a\u76ee\u5f55\uff0c\u505a\u96c6\u7fa4\u7ea7\u7684\u7edf\u4e00\u5907\u4efd\u3002<\/li>\n<li><strong>\u7528\u6cd5\u793a\u4f8b<\/strong>\uff1a<code>redis-cli --cluster backup 127.0.0.1:7001 \/data\/redis_backups\/<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>help<\/strong><\/p>\n<ul>\n<li><strong>\u529f\u80fd<\/strong>\uff1a\u6253\u5370\u51fa\u4ee5\u4e0a Cluster Manager \u547d\u4ee4\u7684\u5e2e\u52a9\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u5c0f\u7ed3\uff1a<br \/>\n<strong><code>--cluster<\/code> \u6a21\u5f0f\u4e0b\u7684\u547d\u4ee4<\/strong>\u53ef\u4ee5\u770b\u4f5c\u662f\u4e00\u4e2a\u201c\u6279\u5904\u7406\u7ba1\u7406\u5de5\u5177\u201d\uff0c\u5b83\u4f1a\u81ea\u52a8\u904d\u5386\u6216\u8fde\u63a5\u96c6\u7fa4\u4e2d\u591a\u4e2a\u8282\u70b9\u6267\u884c\u76f8\u5e94\u64cd\u4f5c\uff08\u521b\u5efa\u3001\u68c0\u67e5\u3001\u4fee\u590d\u3001\u5206\u7247\u8fc1\u79fb\u7b49\uff09\uff0c\u7b80\u5316\u4e86\u4eba\u5de5\u9010\u4e2a\u8282\u70b9\u6267\u884c\u547d\u4ee4\u7684\u9ebb\u70e6\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u4e09\u3001\u4e24\u8005\u7684\u4e3b\u8981\u533a\u522b\u4e0e\u4f7f\u7528\u573a\u666f<\/h2>\n<ol>\n<li><strong>\u4f5c\u7528\u5c42\u6b21\u4e0d\u540c<\/strong>\n<ul>\n<li><code>cluster help<\/code>\uff1a\u4fa7\u91cd\u4e8e<strong>\u670d\u52a1\u7aef<\/strong>\u63d0\u4f9b\u7684\u4f4e\u5c42\u6b21\u64cd\u4f5c\u63a5\u53e3\uff0c\u76f4\u63a5\u901a\u8fc7 <code>CLUSTER &lt;subcommand&gt;<\/code> \u4e0e Redis \u8282\u70b9\u4ea4\u4e92\u3002<\/li>\n<li><code>--cluster help<\/code>\uff1a\u4fa7\u91cd\u4e8e<strong>\u5ba2\u6237\u7aef<\/strong>\u7684\u96c6\u7fa4\u7ba1\u7406\u811a\u672c\u529f\u80fd\uff0c\u76f8\u5f53\u4e8e\u5728\u672c\u5730\u6279\u91cf\u8c03\u7528\u82e5\u5e72 Redis \u547d\u4ee4\u6765\u5b8c\u6210\u66f4\u590d\u6742\u7684\u96c6\u7fa4\u7ba1\u7406\u64cd\u4f5c\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4f7f\u7528\u573a\u666f\u4e0d\u540c<\/strong>\n<ul>\n<li><code>cluster help<\/code>\uff1a\u5e38\u7528\u4e8e<strong>\u65e5\u5e38\u8fd0\u7ef4\u6216\u5728\u7ebf\u67e5\u770b<\/strong>\u96c6\u7fa4\u72b6\u6001\u3001slot \u4fe1\u606f\uff0c\u6216\u5728\u505a\u67d0\u4e9b\u624b\u52a8\u7cbe\u7ec6\u5316\u64cd\u4f5c\uff08\u6bd4\u5982\u7cbe\u786e\u5730\u7ed9\u8282\u70b9\u6dfb\u52a0 slot\u3001\u6307\u5b9a\u8fc1\u79fb slot \u72b6\u6001\uff09\u65f6\u4f7f\u7528\u3002<\/li>\n<li><code>--cluster help<\/code>\uff1a\u5e38\u7528\u4e8e\u4e00\u952e\u5f0f\u64cd\u4f5c\uff0c\u6bd4\u5982\uff1a\n<ul>\n<li>\u521b\u5efa\u96c6\u7fa4(<code>create<\/code>)<\/li>\n<li>\u81ea\u52a8\u5747\u8861(<code>rebalance<\/code>)<\/li>\n<li>\u91cd\u5206\u7247(<code>reshard<\/code>)<\/li>\n<li>\u68c0\u67e5\/\u4fee\u590d(<code>check<\/code>\/<code>fix<\/code>)<\/li>\n<li>\u5907\u4efd(<code>backup<\/code>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u9009\u9879\u6db5\u76d6\u9762<\/strong>\n<ul>\n<li><code>cluster help<\/code>\uff1aRedis \u670d\u52a1\u7aef\u81ea\u5e26\uff0c\u5b50\u547d\u4ee4\u76f8\u5bf9\u56fa\u5b9a\uff0c\u56f4\u7ed5 slot \u4e0e\u8282\u70b9\u5143\u4fe1\u606f\u8fdb\u884c\u7ba1\u7406\u3002<\/li>\n<li><code>--cluster help<\/code>\uff1aRedis CLI \u6269\u5c55\uff0c\u63d0\u4f9b\u4e86\u66f4\u591a\u201c\u7efc\u5408\u7ba1\u7406\u201d\u9009\u9879\uff08\u5982\u4e00\u6b21\u6027\u5728\u591a\u4e2a\u8282\u70b9\u6267\u884c\u547d\u4ee4\u3001\u81ea\u52a8\u5904\u7406\u4ea4\u4e92\u3001\u81ea\u52a8\u8ba1\u7b97 slot \u5206\u914d\u7b49\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h3>\u603b\u7ed3<\/h3>\n<ul>\n<li><strong><code>redis-cli cluster help<\/code><\/strong> \u5c55\u793a\u7684\u662f Redis \u670d\u52a1\u7aef\u81ea\u8eab\u652f\u6301\u7684 <code>CLUSTER<\/code> \u5b50\u547d\u4ee4\uff0c\u9002\u5408<strong>\u5bf9\u96c6\u7fa4\u8fdb\u884c\u7ec6\u7c92\u5ea6\u3001\u5185\u7f6e\u547d\u4ee4\u7ea7<\/strong>\u7684\u64cd\u4f5c\u6216\u67e5\u8be2\u3002<\/li>\n<li><strong><code>redis-cli --cluster help<\/code><\/strong> \u5219\u662f Redis CLI \u5de5\u5177\u63d0\u4f9b\u7684\u9ad8\u7ea7\u7ba1\u7406\u547d\u4ee4\u96c6\u5408\uff0c\u8ba9\u6211\u4eec\u5728\u5ba2\u6237\u7aef\u5c31\u80fd\u5bf9<strong>\u6574\u4e2a\u96c6\u7fa4<\/strong>\u8fdb\u884c\u4e00\u7ad9\u5f0f\u7684\u90e8\u7f72\u3001\u68c0\u67e5\u3001\u4fee\u590d\u3001\u8fc1\u79fb\u3001\u5907\u4efd\u7b49\u64cd\u4f5c\u3002<\/li>\n<\/ul>\n<p>\u5728\u5b9e\u9645\u8fd0\u7ef4\u4e2d\uff0c<strong>\u4e24\u8005\u7ecf\u5e38\u662f\u7ed3\u5408\u4f7f\u7528\u7684<\/strong>\uff1a\u5f53\u9700\u8981\u5feb\u901f\u521b\u5efa\u6216\u91cd\u5206\u7247\u65f6\uff0c\u7528 <code>--cluster<\/code>\uff1b\u5f53\u9700\u8981\u6df1\u5165\u5230\u67d0\u4e2a\u5177\u4f53\u8282\u70b9\u67e5\u770b\u6216\u8c03\u6574 slot \u65f6\uff0c\u5c31\u4f7f\u7528 <code>CLUSTER &lt;subcommand&gt;<\/code>\u3002\u4e24\u79cd\u65b9\u5f0f\u719f\u7ec3\u638c\u63e1\uff0c\u53ef\u4ee5\u5927\u5927\u63d0\u5347\u5bf9 Redis Cluster \u7684\u7ba1\u7406\u6548\u7387\u548c\u7075\u6d3b\u5ea6\u3002<\/p>\n<h1>14.Redis cluster\u96c6\u7fa4\u52a8\u6001\u6269\u5bb9<\/h1>\n<blockquote>\n<p>\u56e0\u516c\u53f8\u4e1a\u52a1\u53d1\u5c55\u8fc5\u731b\uff0c\u73b0\u6709\u7684\u4e09\u4e3b\u4e09\u4ece\u7684redis cluster\u67b6\u6784\u53ef\u80fd\u65e0\u6cd5\u6ee1\u8db3\u73b0\u6709\u4e1a\u52a1\u7684\u5e76\u53d1\u5199\u5165\u9700\u6c42\uff0c\u56e0\u6b64\u516c\u53f8\u7d27\u6025\u91c7\u8d2d\u4e24\u53f0\u670d\u52a1\u566810.0.0.46\uff0c10.0.0.47\uff0c\u9700\u8981\u5c06\u5176\u52a8\u6001\u6dfb\u52a0\u5230\u96c6\u7fa4\u5f53\u4e2d\uff0c\u4f46\u4e0d\u80fd\u5f71\u54cd\u4e1a\u52a1\u4f7f\u7528\u548c\u6570\u636e\u4e22\u5931\u3002<\/p>\n<p>\u6ce8\u610f\uff1a\u751f\u4ea7\u73af\u5883\u4e00\u822c\u5efa\u8baemaster\u8282\u70b9\u4e3a\u5947\u6570\u4e2a\uff0c\u9632\u6b62\u8111\u88c2\u73b0\u8c61\u3002<\/p>\n<\/blockquote>\n<h2>14.1 \u6dfb\u52a0\u65b0\u7684master\u8282\u70b9\u5230\u96c6\u7fa4<\/h2>\n<pre><code class=\"language-bash\"># \u9996\u5148\u5b89\u88c5redis\uff0c\u518d\u6267\u884c\u4e0b\u9762\u547d\u4ee4\n[root@Rocky9 ~]# sed -i.bak -e &#039;s\/bind 127.0.0.1\/bind 0.0.0.0\/&#039; -e &#039;\/masterauth\/a masterauth 123456&#039; -e &#039;\/# requirepass\/a requirepass 123456&#039; -e &#039;\/# cluster-enabled yes\/a cluster-enabled yes&#039; -e &#039;\/# cluster-config-file nodes-6379.conf\/a cluster-config-file nodes-6379.conf&#039; -e &#039;\/cluster-require-full-coverage yes\/c cluster-require-full-coverage no&#039; \/apps\/redis\/etc\/redis.conf\n[root@Rocky9 ~]# systemctl restart redis\n[root@Rocky9 ~]# ps aux | grep redis\nredis      19937  0.3  0.8 136680  8192 ?        Ssl  16:57   0:00 \/apps\/redis\/bin\/redis-server 0.0.0.0:6379 [cluster]\nroot       19947  0.0  0.2   6408  2048 pts\/0    S+   16:57   0:00 grep --color=auto redis\n# 46\u52a0\u5165\u523040\u6240\u5728\u7684\u96c6\u7fa4\u8282\u70b9\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster add-node 10.0.0.46:6379 10.0.0.40:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Adding node 10.0.0.46:6379 to cluster 10.0.0.40:6379\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.40:6379)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[10923-16383] (5461 slots) master\n   1 additional replica(s)\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[0-5460] (5461 slots) master\n   1 additional replica(s)\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[5461-10922] (5462 slots) master\n   1 additional replica(s)\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots: (0 slots) slave\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n>&gt;&gt; Getting functions from cluster\n>&gt;&gt; Send FUNCTION LIST to 10.0.0.46:6379 to verify there is no functions in it\n>&gt;&gt; Send FUNCTION RESTORE to 10.0.0.46:6379\n>&gt;&gt; Send CLUSTER MEET to node 10.0.0.46:6379 to make it join the cluster.\n[OK] New node added correctly.\n\n# \u67e5\u770b\u96c6\u7fa4\u8282\u70b9\uff0c46\u52a0\u5165\u4e86\u96c6\u7fa4\u8282\u70b9\uff0c\u5e76\u6210\u4e3amaster\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1736953737000 3 connected 10923-16383\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1736953737211 7 connected 0-5460\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736953736201 3 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736953736000 2 connected 5461-10922\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1736953738220 0 connected\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736953736000 2 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 7 connected<\/code><\/pre>\n<h2>14.2 \u5728\u65b0\u7684master\u4e0a\u91cd\u65b0\u5206\u914d\u69fd\u4f4d<\/h2>\n<p>\u65b0\u7684node\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e4b\u540e\uff0c\u9ed8\u8ba4\u662fmaster\u8282\u70b9\uff0c\u4f46\u662f\u6ca1\u6709slots\uff0c\u9700\u8981\u91cd\u65b0\u5206\u914d\u3002\u6dfb\u52a0\u4e3b\u673a\u4e4b\u540e\u9700\u8981\u5bf9\u6dfb\u52a0\u81f3\u96c6\u7fa4\u4e2d\u7684\u65b0\u4e3b\u673a\u91cd\u65b0\u5206\u7247\uff0c\u5426\u5219\u5176\u4ed6\u6ca1\u6709\u5206\u7247\u4e5f\u5c31\u65e0\u6cd5\u5199\u5165\u6570\u636e\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a\u91cd\u65b0\u5206\u914d\u69fd\u4f4d\u9700\u8981\u6e05\u7a7a\u6570\u636e\uff0c\u6240\u4ee5\u9700\u8981\u5148\u5907\u4efd\u6570\u636e\uff0c\u6269\u5bb9\u540e\u518d\u6062\u590d\u6570\u636e\u3002<\/strong><\/p>\n<pre><code class=\"language-bash\"># \u65b9\u6cd51\uff1a\u624b\u52a8\u5206\u914d\u69fd\uff08Slots\uff09\uff0c40\u662f\u5f53\u524d\u4efb\u610f\u8282\u70b9\u5373\u53ef\uff0840-45\uff09\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster reshard 10.0.0.40:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.40:6379)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[0-1364],[12287-16383] (5462 slots) master\n   1 additional replica(s)\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[1365-6825] (5461 slots) master\n   1 additional replica(s)\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[6826-12286] (5461 slots) master\n   1 additional replica(s)\nM: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379 #\u65b0\u52a0\u5165\u7684master\u8282\u70b9\u5df2\u7ecf\u5217\u51fa\u6765\u4e86\n   slots: (0 slots) master\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots: (0 slots) slave\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n# \u8981\u8fc1\u79fb\u591a\u5c11\u4e2a\u69fd\nHow many slots do you want to move (from 1 to 16384)? 4096 #\u65b0\u5206\u914d\u591a\u5c11\u4e2a\u69fd\u4f4d=16384\/master\u4e2a\u6570\n# \u69fd\u7684\u76ee\u6807\u8282\u70b9\nWhat is the receiving node ID? c882647e71c8f3cc1b40ea20cc242fecca371cd4 #\u8f93\u5165\u63a5\u6536\u7684master\u7684ID\uff08\u8fd9\u91cc\u5c31\u662f46\u8fd9\u53f0\u673a\u5668\u7684ID\uff09\nPlease enter all the source node IDs.\n  Type &#039;all&#039; to use all the nodes as source nodes for the hash slots.\n  Type &#039;done&#039; once you entered all the source nodes IDs.\nSource node #1: all #\u5c06\u54ea\u4e9b\u6e90\u4e3b\u673a\u7684\u69fd\u4f4d\u5206\u914d\u7ed9\u65b0\u8282\u70b9\uff0call\u662f\u81ea\u52a8\u5728\u6240\u6709\u7684redis node\u9009\u62e9\u5212\u5206\uff0c\u5982\u679c\u662f\u4eceredis cluster\u5220\u9664\u67d0\u4e2a\u4e3b\u673a\u53ef\u4ee5\u4f7f\u7528\u6b64\u65b9\u5f0f\u5c06\u6307\u5b9a\u4e3b\u673a\u4e0a\u7684\u69fd\u4f4d\u5168\u90e8\u79fb\u52a8\u5230\u522b\u7684redis\u4e3b\u673a\u4e0a\n\nReady to move 4096 slots.\n  Source nodes: #\u69fd\u7684\u6765\u6e90\u8282\u70b9\uff0c\u4ece\u4e0b\u9762\u4e09\u4e2amaster\u4e0a\u79fb\u52a8\u69fd\u4f4d\u7ed946\n    M: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n       slots:[0-1364],[12287-16383] (5462 slots) master\n       1 additional replica(s)\n    M: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n       slots:[1365-6825] (5461 slots) master\n       1 additional replica(s)\n    M: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n       slots:[6826-12286] (5461 slots) master\n       1 additional replica(s)\n  Destination node: #\u69fd\u7684\u76ee\u6807\u8282\u70b9\n    M: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n       slots: (0 slots) master\n  Resharding plan:\n    Moving slot 0 from 767c6fc628516c09dd63fe4dbdc36cecee3808b3\n    Moving slot 1 from 767c6fc628516c09dd63fe4dbdc36cecee3808b3\n...... #\u8fd9\u91cc\u7701\u7565\u7c7b\u4f3c\u4fe1\u606f\n    Moving slot 8190 from c9b13ad218d3c8aaf62153738bb21d08a59a66c8\nDo you want to proceed with the proposed reshard plan (yes\/no)? yes #\u786e\u8ba4\u5206\u914d\n......\nMoving slot 8189 from 10.0.0.41:6379 to 10.0.0.46:6379: .\nMoving slot 8190 from 10.0.0.41:6379 to 10.0.0.46:6379: .\n\n# \u65b9\u6cd52\uff1a\u901a\u8fc7rebalance\u8fdb\u884c\u81ea\u52a8\u5206\u914d\uff0c\u4e0d\u9700\u8981\u8ba1\u7b97\u8981\u5206\u914d\u7684\u69fd\u4f4d\uff08\u4e0b\u9762\u4f1a\u91cd\u70b9\u8bb2\u89e3\u8fd9\u4e24\u4e2a\u547d\u4ee4\u7684\u533a\u522breshard\u548crebalance\uff09\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster rebalance 10.0.0.40:6379 --cluster-use-empty-masters\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.40:6379)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n>&gt;&gt; Rebalancing across 4 nodes. Total weight = 4.00\nMoving 1366 slots from 10.0.0.41:6379 to 10.0.0.46:6379 #\u4ece41\u4e0a\u79fb\u52a8\u4e861366\u4e2aslots\n###################################################################################################################################################################\n......\nMoving 1365 slots from 10.0.0.44:6379 to 10.0.0.46:6379 # \u4ece44\u4e0a\u79fb\u52a8\u4e861365\u4e2aslots\n###################################################################################################################################################################\n......\nMoving 1365 slots from 10.0.0.42:6379 to 10.0.0.46:6379 #\u4ece42\u4e0a\u79fb\u52a8\u4e861365\u4e2aslots\n###################################################################################################################################################################\n......\n[root@Rocky9 ~]#\n\n# \u67e5\u770b\u96c6\u7fa4\u8282\u70b9\u5206\u914d\u60c5\u51b5\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1736992172987 12 connected 12288-16383\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1736992170964 10 connected 2730-6825\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736992171000 12 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736992169957 11 connected 8191-12286\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1736992172000 13 connected 0-2729 6826-8190 12287 #\u69fd\u4f4d\u5df2\u7ecf\u5206\u914d\u597d\u4e86\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736992168000 11 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 10 connected\n[root@node1 ~]#\n\n# \u53ea\u67e5\u770b\u69fd\u4f4d\u5206\u914d\u60c5\u51b5\n[root@node1 ~]#redis-cli -a 123456 --cluster check 10.0.0.46:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n10.0.0.46:6379 (c882647e...) -&gt; 2506 keys | 4096 slots | 0 slaves. #4096\u4e2aslots\n10.0.0.44:6379 (5023eb92...) -&gt; 2494 keys | 4096 slots | 1 slaves.\n10.0.0.42:6379 (767c6fc6...) -&gt; 2500 keys | 4096 slots | 1 slaves.\n10.0.0.41:6379 (c9b13ad2...) -&gt; 2500 keys | 4096 slots | 1 slaves.\n[OK] 10000 keys in 4 masters.\n0.61 keys per slot on average.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.46:6379)\nM: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n   slots:[0-2729],[6826-8190],[12287] (4096 slots) master\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[2730-6825] (4096 slots) master\n   1 additional replica(s)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[12288-16383] (4096 slots) master\n   1 additional replica(s)\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[8191-12286] (4096 slots) master\n   1 additional replica(s)\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots: (0 slots) slave\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n[root@node1 ~]#<\/code><\/pre>\n<h3>reshard\u548crebalance\u533a\u522b\uff1a<\/h3>\n<p>\u5728 <strong>Redis Cluster<\/strong> \u4e2d\uff0c<strong>reshard<\/strong> \u548c <strong>rebalance<\/strong> \u90fd\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u69fd\uff08slots\uff09\u7684\u91cd\u65b0\u5206\u914d\uff0c\u4f46\u4e8c\u8005\u5728\u4f7f\u7528\u573a\u666f\u548c\u64cd\u4f5c\u65b9\u5f0f\u4e0a\u6709\u6240\u533a\u522b\uff1a<\/p>\n<ol>\n<li><strong>reshard<\/strong>\n<ul>\n<li><strong>\u547d\u4ee4<\/strong>\uff1a<code>redis-cli --cluster reshard &lt;host&gt;:&lt;port&gt;<\/code><\/li>\n<li><strong>\u5b9a\u4f4d<\/strong>\uff1a\u624b\u52a8\u6307\u5b9a\u8981\u4ece\u54ea\u4e9b\u8282\u70b9\uff08\u6e90\u8282\u70b9\uff09\u79fb\u52a8\u591a\u5c11\u4e2a\u69fd\u5230\u76ee\u6807\u8282\u70b9\u3002<\/li>\n<li>\u5178\u578b\u573a\u666f\uff1a\n<ul>\n<li>\u5f53\u4f60\u60f3\u7cbe\u7ec6\u5730\u63a7\u5236\u67d0\u4e9b\u8282\u70b9\u7684\u69fd\u5206\u914d\u65f6\uff0c\u6bd4\u5982\u628a\u90e8\u5206\u69fd\u4ece\u8282\u70b9 A \u7cbe\u51c6\u5730\u79fb\u52a8\u5230\u8282\u70b9 B\uff0c\u800c\u5176\u4ed6\u8282\u70b9\u4e0d\u53d7\u5f71\u54cd\u3002<\/li>\n<li>\u6709\u4e9b\u573a\u666f\u60f3\u53ea\u7ed9\u67d0\u4e2a\u65b0\u8282\u70b9\u5206\u914d\u6307\u5b9a\u8303\u56f4\u6216\u6570\u91cf\u7684\u69fd\uff0c\u800c\u65e0\u9700\u52a8\u5230\u6574\u4e2a\u96c6\u7fa4\u7684\u69fd\u5206\u5e03\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u64cd\u4f5c\u65b9\u5f0f\uff1a\u5728\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u4e2d\u4f1a\u8ba9\u4f60\u9009\u62e9\uff1a\n<ol>\n<li>\u79fb\u52a8\u591a\u5c11\u4e2a\u69fd\uff1b<\/li>\n<li>\u4ece\u54ea\u4e9b\u8282\u70b9\u642c\u51fa\u69fd\uff1b<\/li>\n<li>\u628a\u8fd9\u4e9b\u69fd\u642c\u5230\u54ea\u4e2a\u8282\u70b9\u3002<br \/>\n\u7136\u540e Redis CLI \u4f1a\u4e00\u6b65\u6b65\u6267\u884c\u8fc1\u79fb\u5e76\u8fdb\u884c\u6570\u636e\u590d\u5236\u3002<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>rebalance<\/strong>\n<ul>\n<li><strong>\u547d\u4ee4<\/strong>\uff1a<code>redis-cli --cluster rebalance &lt;host&gt;:&lt;port&gt;<\/code><\/li>\n<li><strong>\u5b9a\u4f4d<\/strong>\uff1a\u81ea\u52a8\u5728\u6240\u6709<strong>\u4e3b\u8282\u70b9<\/strong>\u4e4b\u95f4\u91cd\u65b0\u5e73\u8861\u69fd\u7684\u5206\u914d\uff0c\u4f7f\u69fd\u5c3d\u91cf\u5e73\u5747\u5730\u5206\u5e03\u5728\u5404\u4e2a\u8282\u70b9\u3002<\/li>\n<li>\u5178\u578b\u573a\u666f\uff1a\n<ul>\n<li>\u5f53\u65b0\u52a0\u5165\u4e00\u4e2a\u4e3b\u8282\u70b9\uff0c\u5e0c\u671b\u81ea\u52a8\u628a\u96c6\u7fa4\u91cc\u7684\u69fd\u5206\u62c5\u4e00\u90e8\u5206\u7ed9\u5b83\uff0c\u8ba9\u69fd\uff08\u4ee5\u53ca\u6570\u636e\uff09\u5728\u6240\u6709\u4e3b\u8282\u70b9\u4e4b\u95f4\u5c3d\u91cf\u5e73\u5747\u3002<\/li>\n<li>\u6216\u8005\u6709\u4e9b\u4e3b\u8282\u70b9\u8d1f\u8f7d\u8fc7\u91cd\uff0c\u81ea\u52a8\u8ba9\u811a\u672c\u6765\u505a\u201c\u5e73\u5747\u5316\u201d\u5904\u7406\uff0c\u800c\u65e0\u9700\u624b\u52a8\u6311\u9009\u8981\u79fb\u52a8\u591a\u5c11\u69fd\u3001\u4ece\u54ea\u4e2a\u8282\u70b9\u79fb\u52a8\u5230\u54ea\u4e2a\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u64cd\u4f5c\u65b9\u5f0f<\/strong>\uff1a\u4e00\u6761\u547d\u4ee4\uff0cRedis \u4f1a\u626b\u63cf\u6240\u6709\u4e3b\u8282\u70b9\u7684\u69fd\u5360\u7528\u60c5\u51b5\uff0c\u5c1d\u8bd5\u8ba9\u6bcf\u4e2a\u8282\u70b9\u5927\u81f4\u62e5\u6709\u540c\u6837\u6570\u91cf\u7684\u69fd\uff0c\u5e76\u6267\u884c\u69fd\u8fc1\u79fb\u548c\u6570\u636e\u590d\u5236\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>\u4e8c\u8005\u7684\u4e3b\u8981\u533a\u522b<\/h3>\n<ol>\n<li><strong>\u64cd\u4f5c\u7684\u7075\u6d3b\u5ea6<\/strong>\n<ul>\n<li><strong>reshard<\/strong>\uff1a\u66f4\u52a0\u201c\u624b\u52a8\u201d\uff0c\u53ef\u4ee5\u7cbe\u7ec6\u5316\u6307\u5b9a\u6e90\u8282\u70b9\u548c\u76ee\u6807\u8282\u70b9\uff0c\u4ee5\u53ca\u69fd\u7684\u6570\u91cf\u6216\u8303\u56f4\u3002\u9002\u5408\u9700\u8981\u5bf9\u69fd\u8fc1\u79fb\u8fdb\u884c<strong>\u81ea\u5b9a\u4e49\u63a7\u5236<\/strong>\u7684\u573a\u666f\u3002<\/li>\n<li><strong>rebalance<\/strong>\uff1a\u66f4\u52a0\u201c\u81ea\u52a8\u201d\uff0cRedis \u81ea\u5df1\u8ba1\u7b97\u51fa\u5982\u4f55\u628a\u69fd\u5206\u914d\u5f97\u66f4\u5747\u5300\u3002\u9002\u5408\u5927\u591a\u6570<strong>\u5feb\u901f\u5747\u8861<\/strong>\u573a\u666f\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4f7f\u7528\u96be\u6613\u7a0b\u5ea6<\/strong>\n<ul>\n<li><strong>reshard<\/strong>\uff1a\u9700\u8981\u4f60\u9010\u6b65\u786e\u8ba4\u54ea\u4e9b\u8282\u70b9\u8981\u79fb\u52a8\u591a\u5c11\u69fd\uff0c\u64cd\u4f5c\u7e41\u7410\u4f46\u7075\u6d3b\u5ea6\u9ad8\u3002<\/li>\n<li><strong>rebalance<\/strong>\uff1a\u4e00\u952e\u5f0f\u81ea\u52a8\u5747\u8861\uff0c\u7b80\u5355\u5feb\u6377\uff0c\u4f46\u4e0d\u80fd\u8fc7\u591a\u81ea\u5b9a\u4e49\u79fb\u52a8\u7ec6\u8282\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5e94\u7528\u573a\u666f<\/strong>\n<ul>\n<li>reshard\uff1a\n<ul>\n<li>\u7cbe\u786e\u63a7\u5236\u67d0\u4e9b\u8282\u70b9\u7684\u8d1f\u8f7d\uff1b<\/li>\n<li>\u53ea\u60f3\u8c03\u6574\u90e8\u5206\u8282\u70b9\uff0c\u800c\u4e0d\u5e0c\u671b\u5f71\u54cd\u5230\u5176\u4ed6\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li>rebalance\uff1a\n<ul>\n<li>\u65b0\u52a0\u4e3b\u8282\u70b9\u540e\uff0c\u8ba9\u6574\u4e2a\u96c6\u7fa4\u81ea\u52a8\u5747\u8861\u69fd\u5206\u5e03\uff1b<\/li>\n<li>\u96c6\u7fa4\u67d0\u4e9b\u4e3b\u8282\u70b9\u8d1f\u8f7d\u4e25\u91cd\u4e0d\u5747\u8861\uff0c\u5e0c\u671b\u4e00\u952e\u5e73\u8861\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<blockquote>\n<p><strong>\u603b\u7ed3<\/strong>\uff1a<\/p>\n<ul>\n<li><strong>reshard<\/strong>\uff1a\u66f4\u9002\u5408<strong>\u7cbe\u7ec6\u5316<\/strong>\u3001<strong>\u6307\u5b9a\u8303\u56f4<\/strong>\u6216<strong>\u5355\u4e00\u8282\u70b9<\/strong>\u7684\u69fd\u8f6c\u79fb\u573a\u666f\u3002<\/li>\n<li><strong>rebalance<\/strong>\uff1a\u66f4\u9002\u5408<strong>\u5168\u5c40<\/strong>\u3001<strong>\u81ea\u52a8\u5316<\/strong>\u7684\u69fd\u518d\u5e73\u8861\u573a\u666f\u3002<\/li>\n<\/ul>\n<p>\u5728\u5b9e\u9645\u751f\u4ea7\u4e2d\uff0c\u5982\u679c\u53ea\u662f\u5355\u7eaf\u8981\u8ba9<strong>\u65b0\u8282\u70b9<\/strong>\u4e0a\u7ebf\u5e76\u5206\u62c5\u90e8\u5206\u6d41\u91cf\uff0c\u901a\u5e38\u7528 <code>rebalance<\/code> \u5c31\u591f\u4e86\uff1b\u5982\u679c\u9700\u8981\u5bf9\u69fd\u5206\u914d<strong>\u9ad8\u5ea6\u81ea\u5b9a\u4e49<\/strong>\uff0c\u5219\u53ef\u4f7f\u7528 <code>reshard<\/code>\u3002<\/p>\n<\/blockquote>\n<h2>14.3 \u4e3a\u65b0\u7684master\u6dfb\u52a0\u65b0\u7684slave\u8282\u70b9<\/h2>\n<blockquote>\n<p>\u9700\u8981\u518d\u5411\u5f53\u524dRedis\u96c6\u7fa4\u4e2d\u6dfb\u52a0\u4e00\u4e2aRedis\u5355\u673a\u670d\u52a1\u566810.0.0.47\uff0c\u7528\u4e8e\u89e3\u51b3\u5f53\u524d10.0.0.46\u5355\u673a\u7684\u6f5c\u5728\u5b95\u673a\u95ee\u9898\uff0c\u5373\u5b9e\u73b0\u54cd\u5e94\u7684\u9ad8\u53ef\u7528\u95ee\u9898\uff0c\u6709\u4e24\u79cd\u65b9\u5f0f\uff1a<\/p>\n<\/blockquote>\n<h3>\u65b9\u6cd51\uff1a\u5728\u65b0\u8282\u70b9\u6dfb\u52a0\u5230\u96c6\u7fa4\u65f6\uff0c\u76f4\u63a5\u5c06\u4e4b\u8bbe\u7f6e\u4e3aslave<\/h3>\n<pre><code class=\"language-bash\"># \u76f4\u63a5\u52a0\u4e3aslave\u8282\u70b9&lt;10.0.0.47&gt;\u662f\u52a0\u5165\u7684slave\u8282\u70b9\uff0c&lt;10.0.0.46&gt;\u662f\u52a0\u5165\u5230\u7684\u96c6\u7fa4\u4efb\u610f\u4e00\u4e2a\u8282\u70b9\n[root@node1 ~]#redis-cli -a 123456 --cluster add-node 10.0.0.47:6379 10.0.0.46:6379 --cluster-slave --cluster-master-id c882647e71c8f3cc1b40ea20cc242fecca371cd4\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Adding node 10.0.0.47:6379 to cluster 10.0.0.46:6379\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.46:6379)\nM: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[1365-5460] (4096 slots) master\n   1 additional replica(s)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[12288-16383] (4096 slots) master\n   1 additional replica(s)\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots: (0 slots) slave\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[6827-10922] (4096 slots) master\n   1 additional replica(s)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n>&gt;&gt; Send CLUSTER MEET to node 10.0.0.47:6379 to make it join the cluster.\nWaiting for the cluster to join\n\n>&gt;&gt; Configure node as replica of 10.0.0.46:6379.\n[OK] New node added correctly.\n\n# \u9a8c\u8bc1\u662f\u5426\u6210\u529f\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1736954647000 3 connected 12288-16383\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 slave c882647e71c8f3cc1b40ea20cc242fecca371cd4 0 1736954647000 8 connected #47\u6210\u4e3a\u4e8646\u7684slave\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1736954646000 7 connected 1365-5460\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736954648000 3 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736954648253 2 connected 6827-10922\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1736954649263 8 connected 0-1364 5461-6826 10923-12287\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736954646000 2 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 7 connected<\/code><\/pre>\n<h4>meet\u548cadd-node\u7684\u533a\u522b\uff1a<\/h4>\n<pre><code class=\"language-bash\">redis-cli --cluster add-node &lt;new_node_host:port&gt; &lt;existing_node_host:port&gt;<\/code><\/pre>\n<p>\u5b83\u5176\u5b9e\u4f1a\u5728\u5185\u90e8\u5e2e\u4f60\u5b8c\u6210\u539f\u751f\u7684 <code>CLUSTER MEET &lt;ip&gt; &lt;port&gt;<\/code> \u64cd\u4f5c\uff0c\u5e76\u4e14\u8fd8\u4f1a\u505a\u4e00\u4e9b\u989d\u5916\u7684\u68c0\u67e5\u548c\u63d0\u793a\uff08\u6bd4\u5982\u7248\u672c\u517c\u5bb9\u3001\u96c6\u7fa4\u72b6\u6001\u7b49\uff09\u3002\u4e5f\u5c31\u662f\u8bf4\uff1a<\/p>\n<ul>\n<li><strong><code>redis-cli --cluster add-node ...<\/code><\/strong> \u662f\u4e00\u4e2a\u66f4\u201c\u9ad8\u7ea7\u201d\u7684\u5c01\u88c5\uff0c\u4e00\u6761\u547d\u4ee4\u5373\u53ef\u628a\u65b0\u8282\u70b9\u52a0\u5165\u96c6\u7fa4\u3002<\/li>\n<li><strong><code>CLUSTER MEET &lt;ip&gt; &lt;port&gt;<\/code><\/strong> \u662f Redis Cluster \u539f\u751f\u5e95\u5c42\u547d\u4ee4\uff0c\u5c5e\u4e8e\u7eaf\u624b\u52a8\u64cd\u4f5c\u65b9\u5f0f\u3002<\/li>\n<\/ul>\n<p>\u4e8c\u8005\u672c\u8d28\u4e0a\u90fd\u80fd\u8ba9\u65b0\u8282\u70b9\u4e0e\u73b0\u6709\u96c6\u7fa4\u201c\u63e1\u624b\u201d\uff0c\u6700\u7ec8\u6548\u679c\u76f8\u540c\u3002\u53ea\u4e0d\u8fc7\uff0c<code>--cluster add-node<\/code> \u66f4\u9002\u5408\u5bf9\u65b0\u624b\u6216\u8ffd\u6c42\u81ea\u52a8\u5316\u7684\u7528\u6237\uff0c\u800c\u624b\u52a8 <code>CLUSTER MEET<\/code> \u65b9\u5f0f\u66f4\u52a0\u539f\u59cb\u3001\u7075\u6d3b\u3002\u4e00\u822c\u6765\u8bf4\uff1a<\/p>\n<ol>\n<li><strong>\u4f7f\u7528 <code>--cluster add-node<\/code><\/strong>\n<ul>\n<li>\u9700\u8981\u7684\u547d\u4ee4\u66f4\u5c11\uff0c\u66f4\u81ea\u52a8\u5316\u3002<\/li>\n<li>\u5982\u679c\u540e\u9762\u8fd8\u9700\u8981\u81ea\u52a8\u5206\u914d\u69fd\uff08slots\uff09\uff0c\u8fd8\u53ef\u4ee5\u76f4\u63a5\u914d\u5408 <code>--cluster rebalance<\/code> \u7b49\u5b50\u547d\u4ee4\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4f7f\u7528 <code>CLUSTER MEET<\/code><\/strong>\n<ul>\n<li>\u9700\u8981\u5bf9 Redis Cluster \u6709\u4e00\u5b9a\u4e86\u89e3\u3002<\/li>\n<li>\u53ef\u4ee5\u914d\u5408 <code>cluster replicate &lt;node_id&gt;<\/code> \u6216 <code>cluster addslots<\/code> \u7b49\u624b\u5de5\u65b9\u5f0f\u4e00\u6b65\u6b65\u7ec6\u7c92\u5ea6\u5730\u64cd\u4f5c\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u56e0\u6b64\uff0c\u4f60\u5728\u547d\u4ee4\u884c\u4e2d\u770b\u5230\u7684\u662f\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -a 123456 --cluster add-node 10.0.0.46:6379 10.0.0.40:6379<\/code><\/pre>\n<p>\u800c\u4e0d\u662f\u624b\u52a8\u6267\u884c\uff1a<\/p>\n<pre><code class=\"language-bash\">redis-cli -h 10.0.0.40 -p 6379 -a 123456 cluster meet 10.0.0.46 6379<\/code><\/pre>\n<h3>\u65b9\u6cd52\uff1a\u5148\u5c06\u65b0\u8282\u70b9\u52a0\u5165\u96c6\u7fa4\uff0c\u5728\u4fee\u6539\u4e3aslave<\/h3>\n<p><strong>\u4e3a\u65b0\u7684master\u6dfb\u52a0slave\u8282\u70b9<\/strong><\/p>\n<pre><code class=\"language-bash\"># \u628a10.0.0.47:6379\u6dfb\u52a0\u5230\u96c6\u7fa4\u4e2d\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster add-node 10.0.0.47:6379 10.0.0.46:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Adding node 10.0.0.47:6379 to cluster 10.0.0.46:6379\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.46:6379)\nM: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n   slots:[0-2729],[6826-8190],[12287] (4096 slots) master\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[2730-6825] (4096 slots) master\n   1 additional replica(s)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[12288-16383] (4096 slots) master\n   1 additional replica(s)\nM: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots:[8191-12286] (4096 slots) master\n   1 additional replica(s)\nS: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots: (0 slots) slave\n   replicates c9b13ad218d3c8aaf62153738bb21d08a59a66c8\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n>&gt;&gt; Getting functions from cluster\n>&gt;&gt; Send FUNCTION LIST to 10.0.0.47:6379 to verify there is no functions in it\n>&gt;&gt; Send FUNCTION RESTORE to 10.0.0.47:6379\n>&gt;&gt; Send CLUSTER MEET to node 10.0.0.47:6379 to make it join the cluster.\n[OK] New node added correctly.\n[root@Rocky9 ~]#\n\n# \u67e5\u770b\u5f53\u524d\u96c6\u7fa4\u8282\u70b9\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1736998066832 12 connected 12288-16383\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 master - 0 1736998065000 0 connected #47\u5df2\u7ecf\u52a0\u5165\u4e86\uff0c\u4f46\u662f\u89d2\u8272\u662fmaster\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1736998064814 10 connected 2730-6825\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736998066000 12 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736998067843 11 connected 8191-12286\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1736998065000 13 connected 0-2729 6826-8190 12287\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736998066000 11 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 10 connected\n[root@node1 ~]#\n<\/code><\/pre>\n<p><strong>\u66f4\u6539\u65b0\u8282\u70b9\u72b6\u6001\u4e3aslave\uff1a<\/strong><\/p>\n<p>\u9700\u8981\u624b\u52a8\u5c06\u5176\u6307\u5b9a\u4e3a\u67d0\u4e2amaster\u7684slave\uff0c\u5426\u5219\u5176\u9ed8\u8ba4\u89d2\u8272\u4e3amaster\u3002<\/p>\n<pre><code class=\"language-bash\">redis-cli -h &lt;\u65b0\u8282\u70b9IP&gt; -p &lt;\u65b0\u8282\u70b9\u7aef\u53e3&gt; \\\n  cluster replicate &lt;\u76ee\u6807\u4e3b\u8282\u70b9ID&gt;<\/code><\/pre>\n<pre><code class=\"language-bash\">[root@Rocky9 ~]# redis-cli -a 123456 -h 10.0.0.47 -p 6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n10.0.0.47:6379&gt; CLUSTER NODES\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736998213000 11 connected\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1736998213000 13 connected 0-2729 6826-8190 12287\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736998214000 12 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 slave 5023eb920093b0da73426572ef189d98f337023e 0 1736998216178 10 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736998215167 11 connected 8191-12286\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 myself,master - 0 0 0 connected # master\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1736998214000 12 connected 12288-16383\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1736998214156 10 connected 2730-6825\n10.0.0.47:6379&gt; CLUSTER REPLICATE c882647e71c8f3cc1b40ea20cc242fecca371cd4 #\u5c06\u5176\u8bbe\u4e3aslave\uff0c\u547d\u4ee4\u683c\u5f0f cluster replicate MASTERID\nOK\n10.0.0.47:6379&gt; CLUSTER NODES\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 slave c9b13ad218d3c8aaf62153738bb21d08a59a66c8 0 1736998293993 11 connected\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1736998291000 13 connected 0-2729 6826-8190 12287\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1736998294000 12 connected\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 slave 5023eb920093b0da73426572ef189d98f337023e 0 1736998291000 10 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 master - 0 1736998295006 11 connected 8191-12286\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 myself,slave c882647e71c8f3cc1b40ea20cc242fecca371cd4 0 0 13 connected # \u662f46\u7684slave\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1736998293000 12 connected 12288-16383\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1736998292982 10 connected 2730-6825\n10.0.0.47:6379&gt;<\/code><\/pre>\n<h1>15.Redis cluster\u96c6\u7fa4\u52a8\u6001\u7f29\u5bb9<\/h1>\n<blockquote>\n<p><strong>\u5b9e\u6218\u6848\u4f8b\uff1a<\/strong><\/p>\n<p>\u7531\u4e8e10.0.0.46\u670d\u52a1\u5668\u4f7f\u7528\u5e74\u9650\u5df2\u7ecf\u8d85\u8fc7\u4e09\u5e74\uff0c\u5df2\u7ecf\u8d85\u8fc7\u5382\u5546\u8d28\u4fdd\u671f\u800c\u4e14\u786c\u76d8\u51fa\u73b0\u5f02\u5e38\u62a5\u8b66\uff0c\u7ecf\u8fd0\u7ef4\u90e8\u67b6\u6784\u5e08\u63d0\u4ea4\u65b9\u6848\u5e76\u540c\u5f00\u53d1\u540c\u4e8b\u5f00\u4f1a\u5546\u8bae\uff0c\u51b3\u5b9a\u5c06\u73b0\u6709Redis\u96c6\u7fa4\u76848\u53f0\u4e3b\u670d\u52a1\u5668\u4e2d\u7684master 10.0.0.46\u548c\u5bf9\u5e94\u7684slave 10.0.0.47 \u4e34\u65f6\u4e0b\u7ebf\uff0c\u4e09\u53f0\u670d\u52a1\u5668\u7684\u5e76\u53d1\u5199\u5165\u6027\u80fd\u8db3\u591f\u652f\u51fa\u672a\u67651-2\u5e74\u7684\u4e1a\u52a1\u9700\u6c42\u3002<\/p>\n<p><strong>\u5220\u9664\u8282\u70b9\u8fc7\u7a0b\uff1a<\/strong><\/p>\n<p>\u6dfb\u52a0\u8282\u70b9\u7684\u65f6\u5019\u662f\u5148\u6dfb\u52a0node\u8282\u70b9\u5230\u96c6\u7fa4\uff0c\u7136\u540e\u5206\u914d\u69fd\u4f4d\uff0c\u5220\u9664\u8282\u70b9\u7684\u64cd\u4f5c\u4e0e\u6dfb\u52a0\u8282\u70b9\u7684\u64cd\u4f5c\u6b63\u597d\u76f8\u53cd\uff0c\u662f\u5148\u5c06\u88ab\u5220\u9664\u7684Redis node\u4e0a\u7684\u69fd\u4f4d\u8fc1\u79fb\u5230\u96c6\u7fa4\u4e2d\u7684\u5176\u4ed6Redis node\u8282\u70b9\u4e0a\uff0c\u7136\u540e\u518d\u5c06\u5176\u5220\u9664\uff0c\u5982\u679c\u4e00\u4e2aRedis node\u8282\u70b9\u4e0a\u7684\u69fd\u4f4d\u6ca1\u6709\u5b8c\u5168\u88ab\u8fc1\u79fb\uff0c\u5220\u9664\u8be5node\u7684\u65f6\u5019\u4f1a\u63d0\u793a\u6709\u6570\u636e\u4e14\u65e0\u6cd5\u5220\u9664\u3002<\/p>\n<p>\u5728 Redis Cluster \u4e2d\uff0c\u5982\u679c\u6253\u7b97<strong>\u7f29\u5bb9<\/strong>\uff08\u79fb\u9664\u4e00\u4e2a\u4e3b\u8282\u70b9\uff09\uff0c\u9700\u8981\u5148\u628a\u8be5\u8282\u70b9\u4e0a\u6240\u6709\u69fd (slots) \u548c\u6570\u636e\u8fc1\u79fb\u5230\u5176\u5b83\u4e3b\u8282\u70b9\uff0c\u7136\u540e\u518d\u6267\u884c\u5220\u9664\u64cd\u4f5c\u3002<\/p>\n<\/blockquote>\n<h2>15.1 \u8fc1\u79fbmaster\u7684\u69fd\u4f4d\u81f3\u5176\u4ed6master\u8282\u70b9<\/h2>\n<h3><strong>\u65b9\u6cd51\uff1a\u624b\u52a8\u8fc1\u79fb<\/strong><\/h3>\n<pre><code class=\"language-bash\"># \u67e5\u770b\u96c6\u7fa4\u8282\u70b9\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1737090417358 12 connected 12288-16383\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 slave c882647e71c8f3cc1b40ea20cc242fecca371cd4 0 1737090416000 13 connected #\u8981\u5220\u9664\u7684slave\u8282\u70b9\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1737090415000 10 connected 2730-6825\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1737090416346 12 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 slave 637a013fee8c69a87d4ca9d503f01d3817680f4c 0 1737090418370 14 connected\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 master - 0 1737090414000 13 connected 0-2729 6826-8190 12287 #\u8981\u5220\u9664\u7684master\u8282\u70b9\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 master - 0 1737090416000 14 connected 8191-12286\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 10 connected\n# \u67e5\u770b\u5f53\u524d\u72b6\u6001\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster check 10.0.0.46:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n10.0.0.46:6379 (c882647e...) -&gt; 2506 keys | 4096 slots | 1 slaves.\n10.0.0.44:6379 (5023eb92...) -&gt; 2494 keys | 4096 slots | 1 slaves.\n10.0.0.42:6379 (767c6fc6...) -&gt; 2500 keys | 4096 slots | 1 slaves.\n10.0.0.45:6379 (637a013f...) -&gt; 2500 keys | 4096 slots | 1 slaves.\n[OK] 10000 keys in 4 masters.\n0.61 keys per slot on average.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.46:6379)\nM: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n   slots:[0-2729],[6826-8190],[12287] (4096 slots) master # 46master\u8282\u70b9slot\u7684\u8303\u56f4\n   1 additional replica(s)\nS: 8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379\n   slots: (0 slots) slave\n   replicates c882647e71c8f3cc1b40ea20cc242fecca371cd4\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[2730-6825] (4096 slots) master\n   1 additional replica(s)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[12288-16383] (4096 slots) master\n   1 additional replica(s)\nS: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots: (0 slots) slave\n   replicates 637a013fee8c69a87d4ca9d503f01d3817680f4c\nM: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots:[8191-12286] (4096 slots) master\n   1 additional replica(s)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n\n# \u8fde\u63a5\u5230\u4efb\u610f\u96c6\u7fa4\u8282\u70b9\uff0c4096\/3=1365\uff08\u7ea6\u7b49\u4e8e\uff09\u5e73\u5747\u6bcf\u4e2a\u8282\u70b9\u5e94\u8be5\u5206\u914d1365\u4e2a\u69fd\u4f4d\n# 1.\u5c061365\u4e2aslot\u4ece10.0.0.46\u79fb\u52a8\u523010.0.0.44\u4e0a\uff08\u8fd9\u6837\u79fb\u52a8\u7684\u539f\u56e0\u662f44\u7684\u69fd\u4f4d\u662f\u4ece[2730-6825]\uff0c\u800c46\u7684\u7b2c\u4e00\u90e8\u5206\u69fd\u4f4d\u662f\u4ece[0-2729]\uff0c\u6240\u4ee5\u8fd9\u6837\u5c31\u8fde\u7eed\u4f4f\u4e86\uff09\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster reshard 10.0.0.46:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.46:6379)\n# \u5206\u7247\u4e4b\u524d\u4f1a\u81ea\u52a8\u68c0\u67e5\u5f53\u524d\u96c6\u7fa4\u7684\u8282\u70b9\u4fe1\u606f\uff08\u5305\u62ec\u69fd\u4f4d\u7684\u533a\u95f4\uff0cnode id\uff0c\u69fd\u4f4d\u7684\u4e2a\u6570\uff0cslave\u5bf9\u5e94master\uff09\nM: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n   slots:[0-2729],[6826-8190],[12287] (4096 slots) master\n   1 additional replica(s)\nS: 8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379\n   slots: (0 slots) slave\n   replicates c882647e71c8f3cc1b40ea20cc242fecca371cd4\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[2730-6825] (4096 slots) master\n   1 additional replica(s)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[12288-16383] (4096 slots) master\n   1 additional replica(s)\nS: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots: (0 slots) slave\n   replicates 637a013fee8c69a87d4ca9d503f01d3817680f4c\nM: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots:[8191-12286] (4096 slots) master\n   1 additional replica(s)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\nHow many slots do you want to move (from 1 to 16384)? 1365 #\u672c\u6b21\u8981\u8fc1\u79fb\u69fd\u4f4d\u7684\u4e2a\u6570\nWhat is the receiving node ID? 5023eb920093b0da73426572ef189d98f337023e #\u63a5\u6536\u69fd\u4f4d\u7684\u4e3b\u8282\u70b9\u7684id\nPlease enter all the source node IDs.\n  Type &#039;all&#039; to use all the nodes as source nodes for the hash slots.\n  Type &#039;done&#039; once you entered all the source nodes IDs.\nSource node #1: c882647e71c8f3cc1b40ea20cc242fecca371cd4 #\u6e90\u4e3b\u8282\u70b9\u7684id\nSource node #2: done #\u8f93\u5165done\n\nReady to move 1365 slots.\n  Source nodes:\n    M: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n       slots:[0-2729],[6826-8190],[12287] (4096 slots) master\n       1 additional replica(s)\n  Destination node:\n    M: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n       slots:[2730-6825] (4096 slots) master\n       1 additional replica(s)\n  Resharding plan:\n    Moving slot 0 from c882647e71c8f3cc1b40ea20cc242fecca371cd4\n......\n    Moving slot 1364 from c882647e71c8f3cc1b40ea20cc242fecca371cd4\nDo you want to proceed with the proposed reshard plan (yes\/no)?yes #\u8f93\u5165yes\nMoving slot 0 from 10.0.0.46:6379 to 10.0.0.44:6379: ..\n......\nMoving slot 1364 from 10.0.0.46:6379 to 10.0.0.44:6379:\n\n#\u975e\u4ea4\u4e92\u7684\u65b9\u5f0f\n#\u518d\u5c061365\u4e2aslot\u4ece10.0.0.46\u79fb\u52a8\u5230\u7b2c\u4e8c\u4e2amaster\u8282\u70b910.0.0.45\u4e0a\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster reshard 10.0.0.46:6379 --cluster-slots 1365 --cluster-from c882647e71c8f3cc1b40ea20cc242fecca371cd4 --cluster-to 637a013fee8c69a87d4ca9d503f01d3817680f4c --cluster-yes\n\n# \u6700\u540e\u7684slot\u4ece10.0.0.46\u79fb\u52a8\u5230\u7b2c\u4e09\u4e2amaster\u8282\u70b910.0.0.42\u4e0a\n[root@Rocky9 ~]#redis-cli -a 123456 --cluster reshard 10.0.0.46:6379 --cluster-slots 1366 --cluster-from c882647e71c8f3cc1b40ea20cc242fecca371cd4 --cluster-to 767c6fc628516c09dd63fe4dbdc36cecee3808b3 --cluster-yes\n\n#\u786e\u8ba410.0.0.46\u7684\u6240\u6709slot\u90fd\u79fb\u8d70\u4e86\uff0c\u5e76\u4e14\u57287\u7cfb\u5217\u7248\u672c\u4e2dmaster\u81ea\u52a8\u4f1a\u53d8\u6210slave\uff0c\u5e76\u4e14\u4e4b\u524d\u5b83\u7684slave\uff0c\u4e00\u8d77\u53d8\u6210\u5176\u4ed6master\u7684slave\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1737093990000 17 connected 6826-8190 12287-16383\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1737093990641 17 connected #\u81ea\u52a8\u5207\u6362\u621042\u7684slave\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1737093991650 15 connected 0-1364 2730-6825\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1737093992660 17 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 slave 637a013fee8c69a87d4ca9d503f01d3817680f4c 0 1737093989000 16 connected\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1737093991000 17 connected #\u5207\u6362\u621042\u7684slave\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 master - 0 1737093991000 16 connected 1365-2729 8191-12286\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 15 connected\n[root@node1 ~]#redis-cli -a 123456 --cluster check 10.0.0.40:6379\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n10.0.0.42:6379 (767c6fc6...) -&gt; 3345 keys | 5462 slots | 3 slaves.\n10.0.0.44:6379 (5023eb92...) -&gt; 3314 keys | 5461 slots | 1 slaves.\n10.0.0.45:6379 (637a013f...) -&gt; 3341 keys | 5461 slots | 1 slaves.\n[OK] 10000 keys in 3 masters.\n0.61 keys per slot on average.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.40:6379)\nS: 334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379\n   slots: (0 slots) slave\n   replicates 5023eb920093b0da73426572ef189d98f337023e\nM: 767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379\n   slots:[6826-8190],[12287-16383] (5462 slots) master\n   3 additional replica(s)\nS: 8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379\n   slots:[0-1364],[2730-6825] (5461 slots) master\n   1 additional replica(s)\nS: 12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nS: c9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379\n   slots: (0 slots) slave\n   replicates 637a013fee8c69a87d4ca9d503f01d3817680f4c\nS: c882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379\n   slots: (0 slots) slave\n   replicates 767c6fc628516c09dd63fe4dbdc36cecee3808b3\nM: 637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379\n   slots:[1365-2729],[8191-12286] (5461 slots) master\n   1 additional replica(s)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n\n# \u67e5\u770b42\u7684\u4e3b\u4ece\u590d\u5236\u60c5\u51b5\uff0c\u6709\u4e09\u4e2aslave\n[root@node1 ~]#redis-cli -a 123456 -h 10.0.0.42 info replication\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n# Replication\nrole:master\nconnected_slaves:3\nslave0:ip=10.0.0.43,port=6379,state=online,offset=488319,lag=0\nslave1:ip=10.0.0.46,port=6379,state=online,offset=488319,lag=0\nslave2:ip=10.0.0.47,port=6379,state=online,offset=488319,lag=1\nmaster_failover_state:no-failover\nmaster_replid:b4e315107bb91caf6f49e76488cf53329f776ab5\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:488319\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:488319\n[root@node1 ~]#\n# \u67e5\u770b\u96c6\u7fa4\u60c5\u51b5\n[root@node1 ~]#redis-cli -a 123456 -h 10.0.0.40 --no-auth-warning cluster info\ncluster_state:ok\ncluster_slots_assigned:16384\ncluster_slots_ok:16384\ncluster_slots_pfail:0\ncluster_slots_fail:0\ncluster_known_nodes:8\ncluster_size:3 #\u67093\u4e2a\u4e3b\u8282\u70b9\ncluster_current_epoch:17\ncluster_my_epoch:15\ncluster_stats_messages_ping_sent:135374\ncluster_stats_messages_pong_sent:128159\ncluster_stats_messages_fail_sent:7\ncluster_stats_messages_update_sent:2\ncluster_stats_messages_sent:263542\ncluster_stats_messages_ping_received:128157\ncluster_stats_messages_pong_received:151740\ncluster_stats_messages_meet_received:2\ncluster_stats_messages_fail_received:2\ncluster_stats_messages_auth-req_received:1\ncluster_stats_messages_update_received:1\ncluster_stats_messages_received:279903\ntotal_cluster_links_buffer_limit_exceeded:0\n[root@node1 ~]#<\/code><\/pre>\n<h3><strong>\u65b9\u6cd52\uff1a\u81ea\u52a8\u8fc1\u79fb<\/strong><\/h3>\n<pre><code class=\"language-bash\">[root@Rocky9 ~]# redis-cli -a 123456 --cluster rebalance 10.0.0.40:6379 --cluster-weight c882647e71c8f3cc1b40ea20cc242fecca371cd4=0 --cluster-use-empty-masters\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Performing Cluster Check (using node 10.0.0.40:6379)\n[OK] All nodes agree about slots configuration.\n>&gt;&gt; Check for open slots...\n>&gt;&gt; Check slots coverage...\n[OK] All 16384 slots covered.\n>&gt;&gt; Rebalancing across 4 nodes. Total weight = 3.00\nMoving 1366 slots from 10.0.0.46:6379 to 10.0.0.42:6379\n###################################################################################################################################################################\n......\nMoving 1365 slots from 10.0.0.46:6379 to 10.0.0.44:6379\n###################################################################################################################################################################\n......\nMoving 1365 slots from 10.0.0.46:6379 to 10.0.0.45:6379\n###################################################################################################################################################################\n......\n[root@Rocky9 ~]# redis-cli -a 123456 -h 10.0.0.40 -p 6379 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1737105281417 19 connected 0-1365 12288-16383\n8b4c349f957e7166dc2834cc1f7109d73ee25542 10.0.0.47:6379@16379 slave 637a013fee8c69a87d4ca9d503f01d3817680f4c 0 1737105278000 21 connected\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1737105277383 20 connected 1366-6826\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1737105279000 19 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 slave 637a013fee8c69a87d4ca9d503f01d3817680f4c 0 1737105280000 21 connected\nc882647e71c8f3cc1b40ea20cc242fecca371cd4 10.0.0.46:6379@16379 slave 637a013fee8c69a87d4ca9d503f01d3817680f4c 0 1737105280409 21 connected\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 master - 0 1737105278000 21 connected 6827-12287\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 20 connected\n[root@Rocky9 ~]#<\/code><\/pre>\n<p><code>--cluster-weight &lt;NodeID&gt;=0<\/code> \uff1a\u5c06\u8282\u70b9\u7684\u6743\u91cd\u8bbe\u4e3a 0\uff0c\u8868\u793a<strong>\u4e0d\u8981\u7ed9\u5b83\u5206\u914d\u69fd<\/strong>\uff0c\u5e76\u628a\u5b83\u76ee\u524d\u6240\u6709\u69fd\u90fd\u8fc1\u8d70\u3002<\/p>\n<p><code>--cluster-use-empty-masters<\/code> \uff1a\u5141\u8bb8\u5c06\u65b0\u7684\u7a7a\u8282\u70b9\u6216\u6307\u5b9a\u8282\u70b9\u4e5f\u88ab\u7eb3\u5165 rebalance \u7684\u8003\u91cf\u4e4b\u4e2d\u3002<\/p>\n<p>\u5728 rebalance \u8fc7\u7a0b\u4e2d\uff0cRedis \u4f1a\u628a\u8be5\u8282\u70b9\u4e0a\u7684\u5168\u90e8\u69fd\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u8282\u70b9\u4e0a\uff08\u53d6\u51b3\u4e8e\u5f53\u524d\u96c6\u7fa4\u72b6\u6001\uff0c\u53ef\u80fd\u4f1a\u5e73\u5747\u8fc1\u79fb\u5230\u591a\u4e2a\u8282\u70b9\uff09\u3002<\/p>\n<h2>15.2 \u4ece\u96c6\u7fa4\u5220\u9664\u8282\u70b9<\/h2>\n<blockquote>\n<p>\u867d\u7136\u69fd\u4f4d\u5df2\u7ecf\u8fc1\u79fb\u5b8c\u6210\u4e86\uff0c\u4f46\u662f\u670d\u52a1\u5668IP\u4fe1\u606f\u8fd8\u5728\u96c6\u7fa4\u5f53\u4e2d\uff0c\u56e0\u6b64\u8fd8\u9700\u8981\u5c06IP\u4fe1\u606f\u4ece\u96c6\u7fa4\u4e2d\u5220\u9664<\/p>\n<p>\u6ce8\u610f\uff1a\u5220\u9664\u670d\u52a1\u5668\u524d\uff0c\u5fc5\u987b\u6e05\u9664\u4e3b\u673a\u4e0a\u9762\u7684\u69fd\u4f4d\uff0c\u5426\u5219\u4f1a\u5220\u9664\u5931\u8d25\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-bash\"># redis-cli -a 123456 --cluster del-node 10.0.0.40:6379 &lt;NodeID_of_46&gt;\n[root@Rocky9 ~]# redis-cli -a 123456 --cluster del-node 10.0.0.46:6379 c882647e71c8f3cc1b40ea20cc242fecca371cd4\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Removing node c882647e71c8f3cc1b40ea20cc242fecca371cd4 from cluster 10.0.0.46:6379\n>&gt;&gt; Sending CLUSTER FORGET messages to the cluster...\n>&gt;&gt; Sending CLUSTER RESET SOFT to the deleted node.<\/code><\/pre>\n<h2>15.3 \u5220\u9664\u591a\u4f59\u7684slave\u8282\u70b9<\/h2>\n<pre><code class=\"language-bash\">[root@Rocky9 ~]# redis-cli -a 123456 --cluster del-node 10.0.0.47:6379 8b4c349f957e7166dc2834cc1f7109d73ee25542\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n>&gt;&gt; Removing node 8b4c349f957e7166dc2834cc1f7109d73ee25542 from cluster 10.0.0.47:6379\n>&gt;&gt; Sending CLUSTER FORGET messages to the cluster...\n>&gt;&gt; Sending CLUSTER RESET SOFT to the deleted node.\n\n# \u67e5\u770b\u96c6\u7fa4\u8282\u70b9\uff0846\u548c47\u90fd\u6ca1\u6709\u4e86\uff09\n[root@node1 ~]#redis-cli -a 123456 cluster nodes\nWarning: Using a password with &#039;-a&#039; or &#039;-u&#039; option on the command line interface may not be safe.\n767c6fc628516c09dd63fe4dbdc36cecee3808b3 10.0.0.42:6379@16379 master - 0 1737101127000 17 connected 6826-8190 12287-16383\n5023eb920093b0da73426572ef189d98f337023e 10.0.0.44:6379@16379 master - 0 1737101128171 15 connected 0-1364 2730-6825\n12b6dbf4fd222db57a57e0bbd42694377a107ca5 10.0.0.43:6379@16379 slave 767c6fc628516c09dd63fe4dbdc36cecee3808b3 0 1737101127159 17 connected\nc9b13ad218d3c8aaf62153738bb21d08a59a66c8 10.0.0.41:6379@16379 slave 637a013fee8c69a87d4ca9d503f01d3817680f4c 0 1737101127000 16 connected\n637a013fee8c69a87d4ca9d503f01d3817680f4c 10.0.0.45:6379@16379 master - 0 1737101125139 16 connected 1365-2729 8191-12286\n334ecb1234284cfa2a60ced7c5a8d29f4cd5de10 10.0.0.40:6379@16379 myself,slave 5023eb920093b0da73426572ef189d98f337023e 0 0 15 connected\n[root@node1 ~]#<\/code><\/pre>\n<h1>16.\u5bfc\u5165\u6570\u636e\u5230Cluster\u4e2d<\/h1>\n<blockquote>\n<p>\u5728 Redis Cluster <strong>\u591a\u4e3b\u8282\u70b9<\/strong>\u7684\u73af\u5883\u4e0b\uff0c\u65e0\u6cd5\u7b80\u5355\u5730\u628a\u201c\u4e00\u4efd RDB \u6587\u4ef6\u201d\u76f4\u63a5\u62f7\u8d1d\u5230\u6240\u6709\u8282\u70b9\u7684\u76ee\u5f55\u4e0b\u5c31\u5b8c\u6210\u6570\u636e\u5bfc\u5165\u3002\u56e0\u4e3a Redis Cluster \u662f\u57fa\u4e8e <strong>\u54c8\u5e0c\u69fd (hash slots)<\/strong> \u8fdb\u884c\u5206\u7247\u7ba1\u7406\uff0c\u5404\u4e2a\u4e3b\u8282\u70b9\u5206\u522b\u6301\u6709\u4e0d\u540c\u7684\u69fd\u53ca\u6570\u636e\u3002\u5982\u679c\u4f60\u4ec5\u4ec5\u5c06\u4e00\u4efd RDB \u653e\u5230\u5176\u4e2d\u67d0\u4e2a\u8282\u70b9\u7684\u672c\u5730\u76ee\u5f55\uff0c\u7136\u540e\u542f\u52a8\u8be5\u8282\u70b9\uff0c\u5c31\u4f1a\u51fa\u73b0\u4ee5\u4e0b\u95ee\u9898\uff1a<\/p>\n<ol>\n<li><strong>RDB \u6587\u4ef6\u4e2d\u7684\u6570\u636e\u5e76\u4e0d\u4e00\u5b9a\u7b26\u5408\u8be5\u8282\u70b9\u6240\u8d1f\u8d23\u7684\u69fd\u8303\u56f4<\/strong>\uff0c\u4f1a\u5bfc\u81f4\u96c6\u7fa4\u8282\u70b9\u4e4b\u95f4\u5bf9\u69fd\u7684\u5f52\u5c5e\u4ea7\u751f\u51b2\u7a81\uff1b<\/li>\n<li>\u5176\u4ed6\u8282\u70b9\u4e0a\u6ca1\u6709\u76f8\u5e94\u7684\u6570\u636e\uff0c\u4e5f\u4e0d\u6e05\u695a\u8be5\u8282\u70b9\u7a81\u7136\u65b0\u589e\u7684\u6570\u636e\u5bf9\u4e8e\u96c6\u7fa4\u6574\u4f53\u610f\u5473\u7740\u4ec0\u4e48\uff1b<\/li>\n<li>\u53ef\u80fd\u6253\u4e71\u539f\u5148\u96c6\u7fa4\u4e2d\u7684\u69fd\u914d\u7f6e\u53ca\u6570\u636e\u4e00\u81f4\u6027\u3002<\/li>\n<\/ol>\n<p>\u56e0\u6b64\uff0c\u5728\u201c\u73b0\u6709\u201dRedis Cluster \u4e0a\u5bfc\u5165\u4e00\u4efd\u65b0\u7684 RDB\uff0c\u9700\u8981\u4e00\u4e2a\u201c\u6570\u636e\u8fc1\u79fb\u201d\u6216\u201c\u6570\u636e\u5bfc\u5165\u201d\u7684\u8fc7\u7a0b\uff0c\u8ba9\u6bcf\u6761\u952e\u503c\u90fd\u843d\u5230<strong>\u6b63\u786e\u7684\u69fd\u5bf9\u5e94\u7684\u8282\u70b9<\/strong>\u4e0a\u3002\u4e0b\u9762\u7ed9\u51fa\u51e0\u79cd\u5e38\u89c1\u7684\u53ef\u884c\u505a\u6cd5\uff1a<\/p>\n<hr \/>\n<h2>\u65b9\u6cd5\u4e00\uff1a\u5148\u5728\u5355\u673a Redis \u4e2d\u52a0\u8f7d RDB\uff0c\u518d\u4f7f\u7528 <code>redis-cli --cluster import<\/code> \u5bfc\u5165<\/h2>\n<p>\u8fd9\u662f\u5b98\u65b9\u63d0\u4f9b\u7684\u4e00\u79cd\u201c\u534a\u81ea\u52a8\u201d\u65b9\u6848\uff0c\u9002\u5408\u5c06<strong>\u5355\u673a<\/strong>\u6570\u636e\u5bfc\u5165\u5230<strong>\u96c6\u7fa4<\/strong>\u4e2d\uff1a<\/p>\n<ol>\n<li><strong>\u542f\u52a8\u4e00\u4e2a\u5355\u673a Redis<\/strong>\n<ul>\n<li>\u5047\u8bbe\u7aef\u53e3\u662f 6380\uff0c\u628a\u4f60\u8981\u5bfc\u5165\u7684 RDB \u6587\u4ef6\u653e\u5230\u8fd9\u4e2a\u5355\u673a Redis \u7684\u6570\u636e\u76ee\u5f55\u4e0b(\u5373 <code>dir<\/code> \u6240\u5728\u8def\u5f84)\uff0c\u786e\u4fdd\u5355\u673a Redis \u542f\u52a8\u540e\u80fd\u52a0\u8f7d\u8be5 RDB\uff0c\u62e5\u6709\u5b8c\u6574\u6570\u636e\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u786e\u8ba4\u5355\u673a Redis \u6570\u636e\u6b63\u5e38<\/strong>\n<ul>\n<li>\u7528 <code>redis-cli -p 6380 dbsize<\/code> \u6216 <code>keys *<\/code> (\u751f\u4ea7\u73af\u5883\u52ff\u7528 <code>KEYS *<\/code>\uff0c\u53ef\u7528 <code>SCAN<\/code>) \u67e5\u770b\u662f\u5426\u5df2\u7ecf\u6210\u529f\u52a0\u8f7d\u76ee\u6807\u6570\u636e\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u4f7f\u7528 <code>redis-cli --cluster import<\/code><\/strong>\n<ul>\n<li>\u5728\u4f60\u7684 Redis CLI \u6240\u5728\u673a\u5668\u4e0a\uff0c\u6267\u884c\uff1a<code>redis-cli --cluster import 127.0.0.1:6380<\/code>\u8fd9\u91cc <code>127.0.0.1:6380<\/code>\u662f\u6307\u90a3\u53f0\u5355\u673a Redis \u7684\u5730\u5740\u548c\u7aef\u53e3\u3002<\/li>\n<li>\u968f\u540e\u4f1a\u8fdb\u5165\u4e00\u4e2a\u4ea4\u4e92\u5f0f\u6d41\u7a0b\uff0c\u8981\u6c42\u4f60\u6307\u5b9a<strong>\u76ee\u6807\u96c6\u7fa4<\/strong>\u7684\u4fe1\u606f\uff08\u4efb\u610f\u4e00\u4e2a\u8282\u70b9\u7684 IP:Port\uff09\uff0c\u4ee5\u53ca\u662f\u5426\u8981\u6267\u884c\u771f\u6b63\u7684\u6570\u636e\u8fc1\u79fb\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5b8c\u6210\u8fc1\u79fb<\/strong>\n<ul>\n<li>Redis CLI \u4f1a\u9010\u4e2a\u952e\u8fdb\u884c <code>MIGRATE<\/code> \u6216\u76f8\u5e94\u6307\u4ee4\uff0c\u628a\u6570\u636e\u6309<strong>\u6b63\u786e\u7684\u54c8\u5e0c\u69fd<\/strong>\u5206\u53d1\u5230\u4f60\u7684\u73b0\u6709 Redis Cluster \u4e2d\u3002<\/li>\n<li>\u8fc1\u79fb\u5b8c\u6210\u540e\uff0c\u4f60\u53ef\u4ee5\u5173\u95ed\u8be5\u5355\u673a Redis \u6216\u8005\u4fdd\u7559\u505a\u5907\u4efd\u5747\u53ef\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<blockquote>\n<p><strong>\u6ce8\u610f<\/strong>\uff1a<code>--cluster import<\/code> \u5728\u4e0d\u540c Redis \u7248\u672c\u4e2d\u53ef\u80fd\u7565\u6709\u5dee\u5f02\uff0c\u9700\u4fdd\u8bc1 <code>redis-cli<\/code> \u7248\u672c\u4e0e\u670d\u52a1\u5668\u7aef\u517c\u5bb9\uff08Redis 5.0+ \u901a\u5e38\u652f\u6301\u5f97\u6bd4\u8f83\u597d\uff09\u3002<\/p>\n<p>\u4e00\u5b9a\u662f\u5355\u673a\u7684Redis\uff0c\u4e0d\u80fd\u662fcluster\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u65b9\u6cd5\u4e8c\uff1a\u4f7f\u7528 <code>MIGRATE<\/code>\/<code>RESTORE<\/code> \u7b49\u547d\u4ee4\u624b\u52a8\u811a\u672c\u5bfc\u5165<\/h2>\n<p>\u5982\u679c\u4f60\u60f3\u5b8c\u5168\u81ea\u5df1\u53ef\u63a7\uff08\u6216\u8005 Redis \u7248\u672c\u8f83\u8001\uff0c\u6ca1\u6709 <code>--cluster import<\/code>\uff09\uff0c\u53ef\u4ee5\u91c7\u53d6\u201c\u811a\u672c + \u547d\u4ee4\u201d\u7684\u65b9\u5f0f\uff1a<\/p>\n<ol>\n<li><strong>\u4f9d\u7136\u5148\u542f\u52a8\u4e00\u53f0\u5355\u673a Redis<\/strong>\uff0c\u52a0\u8f7d RDB \u6587\u4ef6\uff0c\u8ba9\u8fd9\u53f0\u5355\u673a Redis \u62e5\u6709\u5b8c\u6574\u6570\u636e\u3002<\/li>\n<li>\u904d\u5386\u6240\u6709\u952e\n<ul>\n<li>\u901a\u8fc7 <code>SCAN<\/code> \u547d\u4ee4\u9010\u6279\u83b7\u53d6\u6e90\u5b9e\u4f8b\u4e2d\u7684\u6240\u6709 key\uff1b<\/li>\n<li>\u5bf9\u4e8e\u6bcf\u4e2a key\uff0c\u4f7f\u7528 <code>CLUSTER KEYSLOT &lt;key&gt;<\/code> \u7b97\u51fa\u5b83\u5c5e\u4e8e\u54ea\u4e2a\u69fd\uff0c\u7136\u540e\u627e\u5230\u96c6\u7fa4\u4e2d\u8d1f\u8d23\u8be5\u69fd\u7684\u8282\u70b9\uff1b<\/li>\n<li>\u4f7f\u7528 <code>MIGRATE<\/code> \u6216 <code>RESTORE<\/code>\/<code>DUMP<\/code> \u7b49\u65b9\u5f0f\uff0c\u5c06\u8be5 key \u7684\u6570\u636e\u8fc1\u79fb\u5230\u5bf9\u5e94\u8282\u70b9\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u811a\u672c\u5316\u6279\u91cf\u6267\u884c\n<ul>\n<li>\u7531\u4e8e\u624b\u5de5\u6572\u547d\u4ee4\u6548\u7387\u4f4e\u4e14\u5bb9\u6613\u51fa\u9519\uff0c\u901a\u5e38\u4f1a\u7f16\u5199 Python\u3001Go\u3001Shell \u7b49\u811a\u672c\u5b8c\u6210\u4e0a\u8ff0\u903b\u8f91\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u8fd9\u79cd\u65b9\u6cd5\u66f4\u7075\u6d3b\uff0c\u4f46\u5f00\u53d1\u548c\u6267\u884c\u6210\u672c\u8f83\u9ad8\uff0c\u9700\u8981\u81ea\u5df1\u7ba1\u7406\u6279\u6b21\u548c\u7f51\u7edc\u6545\u969c\u91cd\u8bd5\u7b49\u7ec6\u8282\u3002<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u65b9\u6cd5\u4e09\uff1a\u5148\u7528\u8fd9\u4efd RDB \u521b\u5efa\u4e00\u4e2a\u201c\u5355\u8282\u70b9\u96c6\u7fa4\u201d\uff0c\u518d\u6269\u5bb9\/\u5408\u5e76\u5230\u73b0\u6709\u96c6\u7fa4<\/h2>\n<p>\u5982\u679c\u4f60\u60f3\u4fdd\u7559\u96c6\u7fa4\u6a21\u5f0f\uff08\u800c\u4e0d\u662f\u5148\u542f\u52a8\u4e3a\u5355\u673a\uff09\uff0c\u4e5f\u53ef\u4ee5<strong>\u65b0\u5efa\u4e00\u4e2a\u4e34\u65f6\u7684\u5355\u8282\u70b9\u96c6\u7fa4<\/strong>\u6765\u627f\u8f7d\u8fd9\u4efd RDB \u6570\u636e\uff0c\u7136\u540e\u518d\u5c06\u8fd9\u4e2a\u8282\u70b9\u5408\u5e76\u5230\u73b0\u6709\u96c6\u7fa4\uff0c\u518d\u505a\u69fd\u5206\u914d (reshard\/rebalance)\u3002\u4e0d\u8fc7\u64cd\u4f5c\u6b65\u9aa4\u66f4\u591a\uff0c\u4e00\u822c\u4e0d\u5982\u524d\u4e24\u79cd\u65b9\u6cd5\u76f4\u63a5\u3002<\/p>\n<p>\u5927\u81f4\u6d41\u7a0b\uff1a<\/p>\n<ol>\n<li>\u542f\u52a8\u4e00\u4e2a Redis\uff0c\u5f00\u542f <code>cluster-enabled yes<\/code>\uff0c\u8ba9\u5b83<strong>\u81ea\u6210\u4e00\u4e2a\u96c6\u7fa4<\/strong>\uff08\u5355\u4e3b\uff0c\u65e0\u4ece\u8282\u70b9\uff09\uff0c\u52a0\u8f7d\u8fd9\u4efd RDB\uff1b<\/li>\n<li>\u7528 <code>redis-cli --cluster add-node<\/code> \u547d\u4ee4\u628a\u8fd9\u4e2a\u5355\u8282\u70b9\u96c6\u7fa4\u201c\u5408\u5e76\u201d\u8fdb\u4f60\u73b0\u6709\u7684 Redis Cluster\uff1b<\/li>\n<li>\u518d\u7528 <code>redis-cli --cluster rebalance<\/code> \u6216 <code>redis-cli --cluster reshard<\/code> \u5c06\u6240\u6709\u69fd<strong>\u5747\u8861<\/strong>\u6216<strong>\u8fc1\u79fb<\/strong>\u5230\u5bf9\u5e94\u8282\u70b9\uff1b<\/li>\n<li>\u6700\u7ec8\u53ef\u4ee5\u9009\u62e9\u4fdd\u7559\u6216\u5220\u9664\u8be5\u201c\u4e34\u65f6\u8282\u70b9\u201d\uff0c\u770b\u4f60\u5b9e\u9645\u9700\u6c42\u800c\u5b9a\u3002<\/li>\n<\/ol>\n<p>\u8fd9\u79cd\u65b9\u5f0f\u5728\u4e00\u4e9b\u7279\u5b9a\u60c5\u51b5\u4e0b\u4f1a\u6bd4\u8f83\u65b9\u4fbf\uff0c\u4f8b\u5982\u4f60\u4e0d\u60f3\u5148\u8fd0\u884c\u201c\u7eaf\u5355\u673a\u201d\uff0c\u800c\u5e0c\u671b\u4fdd\u6301\u6240\u6709\u8282\u70b9\u90fd\u5728\u201c\u96c6\u7fa4\u6a21\u5f0f\u201d\u3002\u4f46\u662f\u8981\u7279\u522b\u6ce8\u610f\u5b83\u4e0e\u539f\u96c6\u7fa4\u7684 <strong>cluster config<\/strong> \u914d\u7f6e\u4ee5\u53ca\u8282\u70b9\u95f4 <strong>meet<\/strong>\u3001<strong>\u63e1\u624b<\/strong> \u7684\u517c\u5bb9\u95ee\u9898\u3002<\/p>\n<hr \/>\n<h2>\u5c0f\u7ed3<\/h2>\n<ul>\n<li><strong>\u4e0d\u80fd<\/strong>\u76f4\u63a5\u628a RDB \u6587\u4ef6\u62f7\u5230\u67d0\u4e2a\u5df2\u5728\u96c6\u7fa4\u5185\u7684\u8282\u70b9\u76ee\u5f55\u4e0b\u5e76\u91cd\u542f\uff0c\u5c31\u8ba9\u96c6\u7fa4\u201c\u81ea\u52a8\u62e5\u6709\u201d\u8fd9\u4efd\u6570\u636e\u2014\u2014Redis Cluster \u5e76\u4e0d\u4f1a\u81ea\u52a8\u8bc6\u522b\u5e76\u5206\u7247\u8fd9\u4e9b\u65b0\u6570\u636e\u3002<\/li>\n<li>\u6700\u4f73\u5b9e\u8df5\u901a\u5e38\u662f\uff1a\n<ol>\n<li>\u542f\u52a8\u4e00\u4e2a\u201c\u72ec\u7acb Redis\u201d\u52a0\u8f7d RDB\uff1b<\/li>\n<li>\u4f7f\u7528 <code>--cluster import<\/code> \u6216\u8005\u624b\u52a8 <code>MIGRATE<\/code> \u5c06\u6570\u636e\u5199\u5165\u4f60\u7684\u76ee\u6807 Redis Cluster\uff1b<\/li>\n<li>\u9a8c\u8bc1\u6570\u636e\u5b8c\u6574\u6027\u548c\u4e1a\u52a1\u53ef\u7528\u540e\uff0c\u5173\u95ed\u6216\u4fdd\u7559\u8be5\u72ec\u7acb\u5b9e\u4f8b\u3002<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>\u8fd9\u6837\u505a\u65e2\u53ef\u5728\u6700\u5c0f\u98ce\u9669\u4e0b\u5b8c\u6210\u6570\u636e\u5bfc\u5165\uff0c\u53c8\u4e0d\u81f3\u4e8e\u6253\u4e71\u73b0\u6709\u96c6\u7fa4\u7684\u54c8\u5e0c\u69fd\u5206\u914d\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-bash\"># \u53d6\u6d88\u6240\u6709\u673a\u5668\u7684\u5bc6\u7801\n[root@node1 ~]#redis-cli -a 123456 config set requirepass &quot;&quot;\n# \u53d6\u6d88\u4fdd\u62a4\u6a21\u5f0f\n[root@node1 ~]#redis-cli  CONFIG SET protected-mode no\n# \u66f4\u6539\u6c38\u4e45\u4fdd\u5b58\uff0c\u5ba2\u6237\u7aef\u4fee\u6539\u53ef\u4ee5\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u76f4\u63a5\u6539\u914d\u7f6e\u6587\u4ef6\uff0c\u65e0\u9700\u624b\u52a8\u4fee\u6539\n[root@node1 ~]#redis-cli  CONFIG REWRITE\n# 10.0.0.41:6379\u4efb\u610f\u96c6\u7fa4\u4e00\u53f0\u673a\u5668 46\u662f\u5355\u8282\u70b9\u673a\u5668\n#\u53ea\u4f7f\u7528cluster-copy\uff0c\u5219\u8981\u5bfc\u5165\u96c6\u7fa4\u4e2d\u7684key\u4e0d\u80fd\u5b58\u5728\n#\u5982\u679c\u96c6\u7fa4\u4e2d\u5df2\u6709\u540c\u6837\u7684key\uff0c\u5982\u679c\u9700\u8981\u66ff\u6362\uff0c\u53ef\u4ee5cluster-copy\u548ccluster-replace\u8054\u7528\uff0c\u8fd9\u6837\u96c6\u7fa4\u4e2d\u7684key\u5c31\u4f1a\u88ab\u66ff\u6362\u4e3a\u5916\u90e8\u6570\u636e\n[root@node1 ~]#redis-cli --cluster import 10.0.0.41:6379 --cluster-from 10.0.0.46:6379 --cluster-copy --cluster-replace\nMigrating k1707068 to 10.0.0.42:6379: OK\nMigrating k3778193 to 10.0.0.42:6379: OK\nMigrating k5728478 to 10.0.0.44:6379: OK\nMigrating k8826052 to 10.0.0.44:6379: OK\nMigrating k9642751 to 10.0.0.44:6379: OK\nMigrating k9401937 to 10.0.0.45:6379: OK\nMigrating k9849387 to 10.0.0.44:6379: OK\n......\n# \u4e00\u5171\u662f\u4e00\u5343\u4e07\u6761\u6570\u636e\uff0c\u4e09\u4e2a\u4e3b\u8282\u70b9\u6bcf\u4e2a300\u591a\u4e07\n[root@node1 ~]#redis-cli\n127.0.0.1:6379&gt; DBSIZE\n(integer) 3333104\n<\/code><\/pre>\n<p><strong>\u5982\u679c\u5f00\u542f\u4e86\u4fdd\u62a4\u6a21\u5f0f\uff0c\u5982\u56fe\u6240\u793a\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/typora-images-1307361841.cos.ap-beijing.myqcloud.com\/img\/image-20250120132257495.png\" alt=\"image-20250120132257495\" \/><\/p>\n<pre><code class=\"language-bash\">\u6e90 10.0.0.46:6379 \u56de\u5e94\u9519\u8bef\uff1a\n\u62d2\u7edd Redis \u5728\u53d7\u4fdd\u62a4\u6a21\u5f0f\u4e0b\u8fd0\u884c\uff0c\u56e0\u4e3a\u5df2\u542f\u7528\u53d7\u4fdd\u62a4\u6a21\u5f0f\uff0c\u4e14\u672a\u4e3a\u9ed8\u8ba4\u7528\u6237\u8bbe\u7f6e\u5bc6\u7801\u3002\u5728\u6b64\u6a21\u5f0f\u4e0b\uff0c\u53ea\u63a5\u53d7\u6765\u81ea\u73af\u56de\u63a5\u53e3\u7684\u8fde\u63a5\u3002\u5982\u679c\u60f3\u4ece\u5916\u90e8\u7535\u8111\u8fde\u63a5\u5230 Redis\uff0c\u53ef\u4ee5\u91c7\u7528\u4ee5\u4e0b\u89e3\u51b3\u65b9\u6848\u4e4b\u4e00\uff1a 1) \u4ece\u73af\u56de\u63a5\u53e3\u53d1\u9001 \u201cCONFIG SET protected-mode no \u201d\u547d\u4ee4\uff0c\u7981\u7528\u4fdd\u62a4\u6a21\u5f0f\u3002\u4f7f\u7528 CONFIG REWRITE \u5c06\u6b64\u66f4\u6539\u6c38\u4e45\u4fdd\u5b58\u30022) \u6216\u8005\uff0c\u4f60\u4e5f\u53ef\u4ee5\u7f16\u8f91 Redis \u914d\u7f6e\u6587\u4ef6\uff0c\u5c06\u4fdd\u62a4\u6a21\u5f0f\u9009\u9879\u8bbe\u4e3a \u201c\u5426\u201d\uff0c\u7136\u540e\u91cd\u542f\u670d\u52a1\u5668\uff0c\u7981\u7528\u4fdd\u62a4\u6a21\u5f0f\u30023) \u5982\u679c\u53ea\u662f\u4e3a\u4e86\u6d4b\u8bd5\u800c\u624b\u52a8\u542f\u52a8\u670d\u52a1\u5668\uff0c\u8bf7\u4f7f\u7528\u201c--protected-mode no \u201d\u9009\u9879\u91cd\u542f\u670d\u52a1\u5668\u30024) \u4e3a\u9ed8\u8ba4\u7528\u6237\u8bbe\u7f6e\u9a8c\u8bc1\u5bc6\u7801\u3002\u6ce8\u610f\uff1a\u53ea\u9700\u6267\u884c\u4e0a\u8ff0\u64cd\u4f5c\u4e4b\u4e00\uff0c\u670d\u52a1\u5668\u5373\u53ef\u5f00\u59cb\u63a5\u53d7\u6765\u81ea\u5916\u90e8\u7684\u8fde\u63a5\u3002<\/code><\/pre>\n<p><strong>\u5982\u679c\u90a3\u53f0\u5355\u8282\u70b9\u5f00\u542f\u4e86cluster\u6a21\u5f0f\uff0c\u5982\u56fe\u6240\u793a\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash\">[root@Rocky9 data]# ps aux | grep redis\nredis       1071  3.6 70.4 1161192 670360 ?      Ssl  13:25   0:11 \/apps\/redis\/bin\/redis-server 0.0.0.0:6379 [cluster]\nroot        1144  0.0  0.2   6408  2048 pts\/0    S+   13:30   0:00 grep --color=auto redis\n[root@Rocky9 data]#<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/typora-images-1307361841.cos.ap-beijing.myqcloud.com\/img\/image-20250120133209557.png\" alt=\"image-20250120133209557\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>7.Redis \u4e3b\u4ece\u590d\u5236 7.1 Redis \u4e3b\u4ece\u590d\u5236\u7684\u57fa\u672c\u6982\u5ff5 \u4e3b\u8282\u70b9\uff08Master\uff09\u4e0e\u4ece\u8282\u70b9\uff08R [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[88],"tags":[89],"views":599,"_links":{"self":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts\/527"}],"collection":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=527"}],"version-history":[{"count":1,"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts\/527\/revisions"}],"predecessor-version":[{"id":528,"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts\/527\/revisions\/528"}],"wp:attachment":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=527"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}