{"id":33928,"date":"2023-11-23T15:24:23","date_gmt":"2023-12-09T20:13:52","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/"},"modified":"2024-05-04T10:27:24","modified_gmt":"2024-05-04T02:27:24","slug":"%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/","title":{"rendered":"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u662fMicroAd Advent Calendar 2021\u7684\u7b2c11\u5929\u7684\u6587\u7ae0\u3002<\/p>\n<h1>\u6982\u62ec\u4e00\u4e0b<\/h1>\n<p>\u672c\u6587\u5c06\u4ecb\u7ecd\u5728Docker\u73af\u5883\u4e2d\u642d\u5efaRedis Cluster\u5e76\u8fdb\u884c\u64cd\u4f5c\u786e\u8ba4\u7684\u6b65\u9aa4\u3002\u7531\u4e8e\u8fd9\u662f\u4e3a\u4e86\u6574\u7406\u7406\u89e3\u800c\u8fdb\u884c\u7684\u8f93\u51fa\uff0c\u53ef\u80fd\u4f1a\u5b58\u5728\u4e0d\u5b8c\u5584\u4e4b\u5904\uff0c\u8bf7\u8c05\u89e3\u3002\u6b64\u5916\uff0c\u672c\u6587\u7701\u7565\u4e86\u5173\u4e8eRedis\u672c\u8eab\u548c\u590d\u5236\u7684\u89e3\u91ca\u5185\u5bb9\u3002<\/p>\n<h2>\u4f7f\u7528Docker\u51c6\u5907Redis\u73af\u5883\u3002<\/h2>\n<p>\u6211\u4f1a\u521b\u5efa\u4ee5\u4e0b\u8fd9\u6837\u7684\u76ee\u5f55\u7ed3\u6784\u3002<\/p>\n<pre class=\"post-pre\"><code>\u276f tree\r\n.\r\n\u251c\u2500\u2500 conf\r\n\u2502   \u2514\u2500\u2500 redis.conf\r\n\u251c\u2500\u2500 conf2\r\n\u2502   \u2514\u2500\u2500 redis.conf\r\n\u251c\u2500\u2500 conf3\r\n\u2502   \u2514\u2500\u2500 redis.conf\r\n\u251c\u2500\u2500 conf4\r\n\u2502   \u2514\u2500\u2500 redis.conf\r\n\u2514\u2500\u2500 docker-compose.yml\r\n\r\n4 directories, 5 files\r\n<\/code><\/pre>\n<p>\u5728redis.conf\u4e2d\uff0c\u53ea\u9700\u8bb0\u5f55\u6253\u5f00\u96c6\u7fa4\u529f\u80fd\u7684\u5185\u5bb9\u3002<br \/>\nRedis\u8fd8\u6709\u8bb8\u591a\u5176\u4ed6\u8bbe\u7f6e\uff0c\u4f46\u7531\u4e8e\u6709\u8bb8\u591a\u7b80\u660e\u627c\u8981\u7684\u6587\u7ae0\uff0c\u672c\u6587\u4ec5\u4ecb\u7ecd\u6700\u57fa\u672c\u7684\u8bbe\u7f6e\uff0c\u5e76\u9ed8\u8ba4\u4f7f\u7528\u9ed8\u8ba4\u8bbe\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>cluster-enabled yes\r\n<\/code><\/pre>\n<p>Redis\u5c06\u4f7f\u7528\u5b98\u65b9\u7684Docker\u955c\u50cf2\u3002<br \/>\n\u5728Redis\u7684Docker\u955c\u50cf\u4e2d\uff0c\u53ef\u4ee5\u901a\u8fc7\u5728\u547d\u4ee4(command)\u4e2d\u6307\u5b9a\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\u6765\u5728\u542f\u52a8\u65f6\u52a0\u8f7d\u914d\u7f6e\u6587\u4ef6\uff0c<br \/>\n\u901a\u8fc7\u6302\u8f7d(volumes)\u914d\u7f6e\u6587\u4ef6\u5e76\u5728\u547d\u4ee4\u4e2d\u6307\u5b9a\u4e0e\u5bb9\u5668\u5185\u8def\u5f84\u5bf9\u5e94\u7684\u8def\u5f84\u3002<br \/>\ndepends_on\u662f\u4e3a\u4e86\u6309\u7167docker{01-04}\u7684\u987a\u5e8f\u7ed9\u670d\u52a1\u547d\u540d\u5e76\u5206\u914dIP\u5730\u5740\uff0c\u4ee5\u4fbf\u4fdd\u6301\u542f\u52a8\u987a\u5e8f\u4e00\u81f4(\u8fd9\u6837\u5728\u67e5\u627eIP\u5730\u5740\u65f6\u66f4\u65b9\u4fbf)\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">3'<\/span>\r\n<span class=\"na\">services<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">redis01<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis:6.2.6<\/span>\r\n    <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">.\/conf:\/etc\/redis\"<\/span>\r\n    <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">\/etc\/redis\/redis.conf\"<\/span>\r\n  <span class=\"na\">redis02<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis:6.2.6<\/span>\r\n    <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">.\/conf2:\/etc\/redis\"<\/span>\r\n    <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">\/etc\/redis\/redis.conf\"<\/span>\r\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">redis01<\/span>\r\n  <span class=\"na\">redis03<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis:6.2.6<\/span>\r\n    <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">.\/conf3:\/etc\/redis\"<\/span>\r\n    <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">\/etc\/redis\/redis.conf\"<\/span>\r\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">redis02<\/span>\r\n  <span class=\"na\">redis04<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis:6.2.6<\/span>\r\n    <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">.\/conf4:\/etc\/redis\"<\/span>\r\n    <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">\/etc\/redis\/redis.conf\"<\/span>\r\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">redis03<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u542f\u52a8Docker\u5bb9\u5668\u3002<\/p>\n<pre class=\"post-pre\"><code>\u276f docker-compose up -d\r\nBuilding with native build. Learn about native build in Compose here: https:\/\/docs.docker.com\/go\/compose-native-build\/\r\nCreating network \"cluster-test_default\" with the default driver\r\nCreating cluster-test_redis01_1 ... done\r\nCreating cluster-test_redis02_1 ... done\r\nCreating cluster-test_redis03_1 ... done\r\nCreating cluster-test_redis04_1 ... done\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u8fdb\u5165 redis01 \u7684 Docker \u73af\u5883\u4e2d\u7684 Bash \u8fdb\u884c\u5de5\u4f5c\u3002<\/p>\n<p>\u9996\u5148\uff0c\u7531\u4e8e\u9700\u8981\u4f7f\u7528redis-cli\u547d\u4ee4\u6765\u6307\u5b9a\u6bcf\u4e2aRedis\u5b9e\u4f8b\u7684IP\u5730\u5740\uff0c\u56e0\u6b64\u9700\u8981\u67e5\u627eIP\u5730\u5740\u3002<br \/>\n\u867d\u7136\u53ef\u4ee5\u4f7f\u7528docker inspect\u547d\u4ee4\u8fdb\u884c\u67e5\u627e\uff0c\u4f46\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\u6211\u4eec\u51b3\u5b9a\u4f7f\u7528dig\u8fdb\u884c\u67e5\u627e\u3002<\/p>\n<pre class=\"post-pre\"><code>\u276f docker-compose exec redis01 bash\r\nroot@6ba9e07d9434:\/data# apt-get update\r\nGet:1 http:\/\/deb.debian.org\/debian bullseye InRelease [116 kB]\r\n...\u7565\r\n\r\nroot@6ba9e07d9434:\/data# apt install dnsutils\r\nReading package lists... Done\r\nBuilding dependency tree... Done\r\nReading state information... Done\r\n...\u7565\r\n\r\nroot@6ba9e07d9434:\/data# seq 1 4 | xargs -i dig redis0{} | grep redis\r\n; &lt;&lt;&gt;&gt; DiG 9.16.22-Debian &lt;&lt;&gt;&gt; redis01\r\n;redis01.                       IN      A\r\nredis01.                600     IN      A       192.168.144.2\r\n; &lt;&lt;&gt;&gt; DiG 9.16.22-Debian &lt;&lt;&gt;&gt; redis02\r\n;redis02.                       IN      A\r\nredis02.                600     IN      A       192.168.144.3\r\n; &lt;&lt;&gt;&gt; DiG 9.16.22-Debian &lt;&lt;&gt;&gt; redis03\r\n;redis03.                       IN      A\r\nredis03.                600     IN      A       192.168.144.4\r\n; &lt;&lt;&gt;&gt; DiG 9.16.22-Debian &lt;&lt;&gt;&gt; redis04\r\n;redis04.                       IN      A\r\nredis04.                600     IN      A       192.168.144.5\r\n<\/code><\/pre>\n<p>\u7ecf\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0c\u5df2\u7ecf\u6210\u529f\u542f\u52a8\u4e86\u56db\u4e2aRedis\u5b9e\u4f8b\uff0c\u5e76\u4e14\u83b7\u5f97\u4e86\u5b83\u4eec\u7684IP\u5730\u5740\u3002<\/p>\n<pre class=\"post-pre\"><code>redis01 = 192.168.144.2\r\nredis02 = 192.168.144.3\r\nredis03 = 192.168.144.4\r\nredis04 = 192.168.144.5\r\n<\/code><\/pre>\n<h2>\u5efa\u7acbRedis\u96c6\u7fa4<\/h2>\n<p>\u4f7f\u7528redis-cli &#8211;cluster\u547d\u4ee4\u6765\u521b\u5efa\u96c6\u7fa4\u3002<\/p>\n<p>\u5728\u521b\u5efa\u96c6\u7fa4\u65f6\uff0c\u9700\u8981\u8fdb\u884cSlot\u7684\u8bbe\u7f6e\u3002<br \/>\nSlot\u662f\u786e\u5b9a\u6570\u636e\u5b58\u50a8\u5728\u96c6\u7fa4\u4e2d\u54ea\u4e2a\u8282\u70b9\u7684\u673a\u5236\u3002<br \/>\n\u5728\u6570\u636e\u5b58\u50a8\u65f6\uff0c\u88ab\u5206\u914d\u52300~16383\u4e4b\u95f4\u7684\u67d0\u4e2a\u6570\u5b57\u4f5c\u4e3aSlot\uff0c\u5e76\u5c06\u6570\u636e\u5b58\u50a8\u5728\u5177\u6709\u88ab\u5206\u914dSlot\u7684\u8282\u70b9\u4e0a\uff0c\u4ece\u800c\u5b9e\u73b0\u6c34\u5e73\u5206\u5272\uff08Sharding\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli --cluster create 192.168.144.2:6379 192.168.144.3:6379 192.168.144.4:6379\r\n&gt;&gt;&gt; Performing hash slots allocation on 3 nodes...\r\nMaster[0] -&gt; Slots 0 - 5460\r\nMaster[1] -&gt; Slots 5461 - 10922\r\nMaster[2] -&gt; Slots 10923 - 16383\r\nM: 0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379\r\n   slots:[0-5460] (5461 slots) master\r\nM: 5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379\r\n   slots:[5461-10922] (5462 slots) master\r\nM: 5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379\r\n   slots:[10923-16383] (5461 slots) master\r\nCan I set the above configuration? (type 'yes' to accept): yes # &lt;-- 3\u30ce\u30fc\u30c9\u3067\u5747\u7b49\u306b\u5206\u5272\u3059\u308b\u304b\u805e\u304b\u308c\u307e\u3059\r\n&gt;&gt;&gt; Nodes configuration updated\r\n&gt;&gt;&gt; Assign a different config epoch to each node\r\n&gt;&gt;&gt; Sending CLUSTER MEET messages to join the cluster\r\nWaiting for the cluster to join\r\n..\r\n&gt;&gt;&gt; Performing Cluster Check (using node 192.168.144.2:6379)\r\nM: 0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379\r\n   slots:[0-5460] (5461 slots) master\r\nM: 5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379\r\n   slots:[10923-16383] (5461 slots) master\r\nM: 5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379\r\n   slots:[5461-10922] (5462 slots) master\r\n[OK] All nodes agree about slots configuration.\r\n&gt;&gt;&gt; Check for open slots...\r\n&gt;&gt;&gt; Check slots coverage...\r\n[OK] All 16384 slots covered.\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7redis-cli cluster nodes\u547d\u4ee4\u6765\u67e5\u770b\u96c6\u7fa4\u7684\u72b6\u6001\u3002<br \/>\n\u901a\u8fc7\u4f7f\u7528-h\u9009\u9879\u6765\u6307\u5b9a\u4e3b\u673a\uff0c\u4ee5\u4e0b\u793a\u4f8b\u4e2d\u6307\u5b9a\u4e86\u4e3b\u673aredis01\u3002<br \/>\n\u5176\u4e2d\uff0c3\u4e2a\u8282\u70b9\u88ab\u6807\u8bb0\u4e3amaster\uff0c\u5e76\u4e14\u8fde\u63a5\u5230\u7684\u4e3b\u673a\u88ab\u6807\u8bb0\u4e3amyself\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis01 cluster nodes\r\n5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379@16379 master - 0 1639150635000 3 connected 10923-16383\r\n0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379@16379 myself,master - 0 1639150632000 1 connected 0-5460\r\n5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379@16379 master - 0 1639150635554 2 connected 5461-10922\r\n<\/code><\/pre>\n<h2>\u6570\u636e\u7684\u5b58\u50a8\u548c\u68c0\u7d22<\/h2>\n<p>\u8fde\u63a5\u5230cluster\u65f6\uff0c\u4f7f\u7528-c\u9009\u9879\u3002\u8fd9\u6837\uff0c\u5982\u679c\u76ee\u6807Slot\u4e0d\u540c\uff0c\u5b83\u4f1a\u81ea\u52a8\u91cd\u5b9a\u5411\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis01 -c\r\nredis01:6379&gt; \r\nredis01:6379&gt; set key01 value01\r\n-&gt; Redirected to slot [13770] located at 192.168.144.4:6379\r\nOK\r\n192.168.144.4:6379&gt; get key01\r\n\"value01\"\r\n<\/code><\/pre>\n<p>\u6ca1\u6709\u4f7f\u7528-c\u9009\u9879\u8fdb\u884c\u786e\u8ba4\u3002<br \/>\n\u9996\u5148\u4ece\u6ca1\u6709\u5b58\u50a8\u6570\u636e\u7684redis01\uff08192.168.144.2\uff09\u83b7\u53d6\u4f1a\u51fa\u9519\u3002<br \/>\n\u7136\u540e\u8fde\u63a5\u5230\u663e\u793a\u9519\u8bef\u7684redis03\uff08192.168.144.4\uff09\u53ef\u4ee5\u6210\u529f\u8fdb\u884cGET\u64cd\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis01   \r\nredis01:6379&gt; get key01\r\n(error) MOVED 13770 192.168.144.4:6379\r\nredis01:6379&gt; \r\nroot@6ba9e07d9434:\/data# redis-cli -h redis03 \r\nredis03:6379&gt; get key01\r\n\"value01\"\r\n<\/code><\/pre>\n<h2>\u6dfb\u52a0\u4e00\u4e2a\u5974\u96b6<\/h2>\n<p>\u5c06redis04\uff08192.168.144.5:6379\uff09\u6dfb\u52a0\u4e3aredis0\uff08192.168.144.2\uff09\u7684\u4ece\u8282\u70b9\u3002<br \/>\n\u547d\u4ee4\u683c\u5f0f\u4e3aredis-cli &#8211;cluster add-node &lt;\u8981\u6dfb\u52a0\u7684\u8282\u70b9IP:\u7aef\u53e3&gt; &lt;\u76ee\u6807\u8282\u70b9IP:\u7aef\u53e3&gt;\uff0c\u5982\u679c\u6dfb\u52a0\u65f6\u52a0\u4e0a-cluster-slave\u53c2\u6570\uff0c\u5219\u4e3a\u4ece\u8282\u70b9\uff0c\u4e0d\u52a0\u5219\u4e3a\u4e3b\u8282\u70b9\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli --cluster add-node 192.168.144.5:6379 192.168.144.2:6379 --cluster-slave\r\n&gt;&gt;&gt; Adding node 192.168.144.5:6379 to cluster 192.168.144.2:6379\r\n&gt;&gt;&gt; Performing Cluster Check (using node 192.168.144.2:6379)\r\nM: 0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379\r\n   slots:[0-5460] (5461 slots) master\r\nM: 5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379\r\n   slots:[10923-16383] (5461 slots) master\r\nM: 5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379\r\n   slots:[5461-10922] (5462 slots) master\r\n[OK] All nodes agree about slots configuration.\r\n&gt;&gt;&gt; Check for open slots...\r\n&gt;&gt;&gt; Check slots coverage...\r\n[OK] All 16384 slots covered.\r\nAutomatically selected master 192.168.144.2:6379\r\n&gt;&gt;&gt; Send CLUSTER MEET to node 192.168.144.5:6379 to make it join the cluster.\r\nWaiting for the cluster to join\r\n\r\n&gt;&gt;&gt; Configure node as replica of 192.168.144.2:6379.\r\n[OK] New node added correctly.\r\n<\/code><\/pre>\n<p>\u786e\u8ba4\u540e\uff0c\u5728\u6700\u5e95\u90e8\u6dfb\u52a0\u4e86\u4e00\u4e2a\u4ece\u8282\u70b9\u3002<br \/>\n\u4ece\u8282\u70b9\u6700\u53f3\u8fb9\u7684\u5b57\u7b26\u4e32\u662f\u4e3b\u8282\u70b9\u7684\u8282\u70b9ID\uff0c\u5176\u4e2d0bd&#8230;\u6307\u7684\u662fredis0(192.168.144.2)\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli cluster nodes\r\n5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379@16379 master - 0 1639152407000 3 connected 10923-16383\r\n0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379@16379 myself,master - 0 1639152406000 1 connected 0-5460\r\n5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379@16379 master - 0 1639152408449 2 connected 5461-10922\r\ne686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379@16379 slave 0bd346a134981afb74a136e665a6027821b2016b 0 1639152407444 1 connected\r\n<\/code><\/pre>\n<p>\u4f60\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u6307\u4ee4\u786e\u8ba4\u6bcf\u4e2a\u4e3b\u8282\u70b9\u4e0a\u6709\u51e0\u4e2a\u4ece\u8282\u70b9\u548c\u952e\u3002\u53ef\u4ee5\u770b\u5230\u6709\u4e00\u4e2a\u4e3b\u8282\u70b9\u65b0\u589e\u4e86\u4e00\u4e2a\u4ece\u8282\u70b9\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli --cluster info 192.168.144.2 6379\r\n192.168.144.2:6379 (0bd346a1...) -&gt; 0 keys | 5461 slots | 1 slaves.\r\n192.168.144.4:6379 (5549145f...) -&gt; 1 keys | 5461 slots | 0 slaves.\r\n192.168.144.3:6379 (5dbd6568...) -&gt; 0 keys | 5462 slots | 0 slaves.\r\n[OK] 1 keys in 3 masters.\r\n0.00 keys per slot on average.\r\n<\/code><\/pre>\n<p>\u5728failover\u547d\u4ee4\u4e2d\uff0c\u53ef\u4ee5\u4ea4\u66ff\u5207\u6362\u4e3b\u8282\u70b9\u548c\u4ece\u8282\u70b9\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h 192.168.144.5 cluster failover\r\nOK\r\n<\/code><\/pre>\n<p>redis01(192.168.144.2) \u6210\u4e3a\u4e86\u4ece\u670d\u52a1\u5668\uff0credis04(192.168.144.5) \u6210\u4e3a\u4e86\u4e3b\u670d\u52a1\u5668\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli cluster nodes\r\n5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379@16379 master - 0 1639155508000 3 connected 10923-16383\r\n0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379@16379 myself,slave e686a6bb888858f330218ed8c4355ef481028668 0 1639155511000 4 connected\r\n5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379@16379 master - 0 1639155511870 2 connected 5461-10922\r\ne686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379@16379 master - 0 1639155510865 4 connected 0-5460\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u786e\u8ba4\u4e86\u52a8\u4f5c\uff0c\u5c06\u5220\u9664\u4ece\u8282\u70b9redis01\uff08192.168.144.2\uff09\u3002<br \/>\n\u8981\u5220\u9664\u8282\u70b9\uff0c\u8bf7\u4f7f\u7528redis-cli &#8211;cluster del-node &lt;\u5220\u9664\u76ee\u6807\u8282\u70b9\u7684IP:\u7aef\u53e3&gt; &lt;\u5220\u9664\u76ee\u6807\u8282\u70b9\u7684ID&gt;\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli --cluster del-node 192.168.144.2:6379 0bd346a134981afb74a136e665a6027821b2016b\r\n&gt;&gt;&gt; Removing node 0bd346a134981afb74a136e665a6027821b2016b from cluster 192.168.144.2:6379\r\n&gt;&gt;&gt; Sending CLUSTER FORGET messages to the cluster...\r\n&gt;&gt;&gt; Sending CLUSTER RESET SOFT to the deleted node.\r\n<\/code><\/pre>\n<p>\u67e5\u770b\u96c6\u7fa4\u4fe1\u606f\uff0c\u53d1\u73b0redis01\uff08192.168.144.2\uff09\u5df2\u7ecf\u6d88\u5931\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis02 cluster nodes\r\n5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379@16379 master - 0 1639155750324 3 connected 10923-16383\r\ne686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379@16379 master - 0 1639155749319 4 connected 0-5460\r\n5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379@16379 myself,master - 0 1639155749000 2 connected 5461-10922\r\n<\/code><\/pre>\n<p>\u5f9e\u88ab\u522a\u9664\u7bc0\u9ederedis01(192.168.144.2)\u7684\u89d2\u5ea6\u4f86\u770b\uff0c\u5b83\u53ea\u80fd\u770b\u5230\u81ea\u5df1\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis01 cluster nodes\r\n0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379@16379 myself,master - 0 1639155731000 1 connected\r\n<\/code><\/pre>\n<h2>\u6dfb\u52a0\u4e3b\u63a7<\/h2>\n<p>\u4e0b\u4e00\u6b65\u662f\u5c06redis01(192.168.144.2)\u4f5c\u4e3a\u4e3b\u8282\u70b9\u8fdb\u884c\u6dfb\u52a0\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli --cluster add-node 192.168.144.2:6379 192.168.144.5:6379\r\n&gt;&gt;&gt; Adding node 192.168.144.2:6379 to cluster 192.168.144.5:6379\r\n&gt;&gt;&gt; Performing Cluster Check (using node 192.168.144.5:6379)\r\nM: e686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379\r\n   slots:[0-5460] (5461 slots) master\r\nM: 5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379\r\n   slots:[5461-10922] (5462 slots) master\r\nM: 5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379\r\n   slots:[10923-16383] (5461 slots) master\r\n[OK] All nodes agree about slots configuration.\r\n&gt;&gt;&gt; Check for open slots...\r\n&gt;&gt;&gt; Check slots coverage...\r\n[OK] All 16384 slots covered.\r\n&gt;&gt;&gt; Send CLUSTER MEET to node 192.168.144.2:6379 to make it join the cluster.\r\n[OK] New node added correctly.\r\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u786e\u8ba4\u67094\u4e2a\u4e3b\u8282\u70b9\u3002<br \/>\n\u7136\u800c\uff0c\u7531\u4e8e\u6dfb\u52a0\u7684\u8282\u70b9\u6ca1\u6709\u5206\u914d\u69fd\u4f4d\uff0c\u6240\u4ee5\u53f3\u4fa7\u7684connected\u6ca1\u6709\u4efb\u4f55\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis02 cluster nodes\r\n0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379@16379 master - 0 1639155981275 1 connected\r\n5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379@16379 master - 0 1639155980271 3 connected 10923-16383\r\ne686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379@16379 master - 0 1639155979267 4 connected 0-5460\r\n5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379@16379 myself,master - 0 1639155978000 2 connected 5461-10922\r\n<\/code><\/pre>\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528reshard\u547d\u4ee4\u91cd\u65b0\u5206\u914d\u69fd\u4f4d\u3002<\/p>\n<p>\u547d\u4ee4\u4f1a\u8fdb\u884c\u4ea4\u4e92\u5f0f\u64cd\u4f5c\uff0c\u9996\u5148\u4f1a\u8be2\u95ee\u8981\u79fb\u52a8\u7684Slottt\u6570\u91cf\uff0c\u56e0\u4e3a16384\uff08\u603bSlot\u6570\uff09\u9664\u4ee54\uff08\u4e3b\u8282\u70b9\u6570\uff09\u7b49\u4e8e4096\uff0c\u6240\u4ee5\u8f93\u51654096\u3002<br \/>\n\u63a5\u4e0b\u6765\u4f1a\u8be2\u95ee\u662f\u5426\u8981\u4ece\u6240\u6709\u8282\u70b9\u6267\u884c\u79fb\u52a8\u64cd\u4f5c\uff0c\u8f93\u5165yes\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli --cluster reshard 192.168.144.2:6379\r\n&gt;&gt;&gt; Performing Cluster Check (using node 192.168.144.2:6379)\r\nM: 0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379\r\n   slots: (0 slots) master\r\nM: 5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379\r\n   slots:[10923-16383] (5461 slots) master\r\nM: 5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379\r\n   slots:[5461-10922] (5462 slots) master\r\nM: e686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379\r\n   slots:[0-5460] (5461 slots) master\r\n[OK] All nodes agree about slots configuration.\r\n&gt;&gt;&gt; Check for open slots...\r\n&gt;&gt;&gt; Check slots coverage...\r\n[OK] All 16384 slots covered.\r\nHow many slots do you want to move (from 1 to 16384)? 4096   &lt;-- 1. \u79fb\u52d5Slot\u6570\r\nWhat is the receiving node ID? 0bd346a134981afb74a136e665a6027821b2016b\r\nPlease enter all the source node IDs.\r\n  Type 'all' to use all the nodes as source nodes for the hash slots.\r\n  Type 'done' once you entered all the source nodes IDs.\r\nSource node #1: all  &lt;-- 2. \u5168\u30ce\u30fc\u30c9\u304b\u3089\u79fb\u52d5\r\n...\u7565\r\n\r\n    Moving slot 1363 from e686a6bb888858f330218ed8c4355ef481028668\r\n    Moving slot 1364 from e686a6bb888858f330218ed8c4355ef481028668\r\nDo you want to proceed with the proposed reshard plan (yes\/no)? yes  &lt;-- 3. \u4e0a\u8a18\u5909\u66f4\u3067\u5b9f\u884c\u3059\u308b\u304b\r\n\r\n....\u7565\r\nMoving slot 1363 from 192.168.144.5:6379 to 192.168.144.2:6379: \r\nMoving slot 1364 from 192.168.144.5:6379 to 192.168.144.2:6379:\r\n<\/code><\/pre>\n<p>\u5f53\u68c0\u67e5\u96c6\u7fa4\u7684\u8282\u70b9\u65f6\uff0c\u53ef\u4ee5\u770b\u5230Slot\u88ab\u5747\u7b49\u5730\u6c34\u5e73\u5206\u5272\u3002<\/p>\n<pre class=\"post-pre\"><code>root@6ba9e07d9434:\/data# redis-cli -h redis02 cluster nodes\r\n0bd346a134981afb74a136e665a6027821b2016b 192.168.144.2:6379@16379 master - 0 1639157313371 5 connected 0-1364 5461-6826 10923-12287\r\n5549145f997afaad00dad89b5f312a044be6c5ca 192.168.144.4:6379@16379 master - 0 1639157315379 3 connected 12288-16383\r\ne686a6bb888858f330218ed8c4355ef481028668 192.168.144.5:6379@16379 master - 0 1639157314374 4 connected 1365-5460\r\n5dbd6568e5ec7b2c15e4d5bb4988726c663fcf75 192.168.144.3:6379@16379 myself,master - 0 1639157314000 2 connected 6827-10922\r\n<\/code><\/pre>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u6b64\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5229\u7528Docker\u73af\u5883\u642d\u5efaRedis\u96c6\u7fa4\uff0c\u5e76\u8fdb\u884c\u4e86\u96c6\u7fa4\u7684\u8fd0\u884c\u9a8c\u8bc1\u3002<\/p>\n<p>\u5982\u679c\u4e0d\u4f7f\u7528Docker\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5c06Redis\u7ed1\u5b9a\u5230\u4e0d\u540c\u7684\u7aef\u53e3\u6765\u542f\u52a8Redis\u7684\u65b9\u5f0f\u6765\u5b9e\u73b0\u3002\u4f7f\u7528Docker\u53ef\u4ee5\u7701\u53bb\u73af\u5883\u8bbe\u7f6e\u7684\u9ebb\u70e6\uff0c\u65b9\u4fbf\u5730\u8fdb\u884c\u64cd\u4f5c\u786e\u8ba4\uff0c\u8fd9\u4e5f\u662f\u6211\u5199\u8fd9\u7bc7\u6587\u7ae0\u7684\u539f\u56e0\u3002<\/p>\n<p>\u53ea\u8981\u80fd\u5bf9\u4f60\u6709\u4e00\u70b9\u5e2e\u52a9\uff0c\u6211\u5c31\u611f\u5230\u5f88\u5e78\u798f\u3002<\/p>\n<div>\n<p>https:\/\/zenn.dev\/tayura\/articles\/dfc8be8418d927 (\u70b9\u51fb\u6b64\u5904\u8fdb\u884c\u8bbf\u95ee)<\/p>\n<p>https:\/\/hub.docker.com\/_\/redis (\u70b9\u51fb\u6b64\u5904\u8fdb\u884c\u8bbf\u95ee)<\/p>\n<p>https:\/\/qiita.com\/keitatata\/items\/44678ad472e61a4606c5 (\u70b9\u51fb\u6b64\u5904\u8fdb\u884c\u8bbf\u95ee)<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u662fMicroAd Advent Calendar 2021\u7684\u7b2c11\u5929\u7684\u6587\u7ae0\u3002 \u6982\u62ec\u4e00\u4e0b \u672c\u6587\u5c06\u4ecb\u7ecd\u5728D [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-33928","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528docker\u5c1d\u8bd5redis\u96c6\u7fa4\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4\" \/>\n<meta property=\"og:description\" content=\"\u8fd9\u7bc7\u6587\u7ae0\u662fMicroAd Advent Calendar 2021\u7684\u7b2c11\u5929\u7684\u6587\u7ae0\u3002 \u6982\u62ec\u4e00\u4e0b \u672c\u6587\u5c06\u4ecb\u7ecd\u5728D [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528docker\u5c1d\u8bd5redis\u96c6\u7fa4\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-09T20:13:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T02:27:24+00:00\" \/>\n<meta name=\"author\" content=\"\u6e05, \u626c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u626c\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/\",\"name\":\"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-12-09T20:13:52+00:00\",\"dateModified\":\"2024-05-04T02:27:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461\",\"name\":\"\u6e05, \u626c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u626c\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528docker\u5c1d\u8bd5redis\u96c6\u7fa4\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4","og_description":"\u8fd9\u7bc7\u6587\u7ae0\u662fMicroAd Advent Calendar 2021\u7684\u7b2c11\u5929\u7684\u6587\u7ae0\u3002 \u6982\u62ec\u4e00\u4e0b \u672c\u6587\u5c06\u4ecb\u7ecd\u5728D [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528docker\u5c1d\u8bd5redis\u96c6\u7fa4\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-12-09T20:13:52+00:00","article_modified_time":"2024-05-04T02:27:24+00:00","author":"\u6e05, \u626c","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u626c","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/","name":"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-12-09T20:13:52+00:00","dateModified":"2024-05-04T02:27:24+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528Docker\u5c1d\u8bd5Redis\u96c6\u7fa4"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461","name":"\u6e05, \u626c","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","caption":"\u6e05, \u626c"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8docker%e5%b0%9d%e8%af%95redis%e9%9b%86%e7%be%a4\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/33928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=33928"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/33928\/revisions"}],"predecessor-version":[{"id":97774,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/33928\/revisions\/97774"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=33928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=33928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=33928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}