{"id":201298,"date":"2025-05-10T08:36:40","date_gmt":"2025-05-10T00:36:40","guid":{"rendered":"https:\/\/server.hk\/cnblog\/201298\/"},"modified":"2025-05-10T08:36:40","modified_gmt":"2025-05-10T00:36:40","slug":"redis-%e5%93%a8%e5%85%b5%e9%9b%86%e7%be%a4%e7%9a%84%e5%ae%9e%e7%8e%b0","status":"publish","type":"post","link":"https:\/\/server.hk\/cnblog\/201298\/","title":{"rendered":"Redis \u54e8\u5175\u96c6\u7fa4\u7684\u5b9e\u73b0"},"content":{"rendered":"<p><b><\/b> <\/p>\n<h1>Redis \u54e8\u5175\u96c6\u7fa4\u7684\u5b9e\u73b0<\/h1>\n<p><span style=\"cursor: pointer\"><i><\/i>\u6536\u85cf<\/span> <\/p>\n<p>\u77e5\u8bc6\u70b9\u638c\u63e1\u4e86\uff0c\u8fd8\u9700\u8981\u4e0d\u65ad\u7ec3\u4e60\u624d\u80fd\u719f\u7ec3\u8fd0\u7528\u3002\u4e0b\u9762golang\u5b66\u4e60\u7f51\u7ed9\u5927\u5bb6\u5e26\u6765\u4e00\u4e2a\u6570\u636e\u5e93\u5f00\u53d1\u5b9e\u6218\uff0c\u624b\u628a\u624b\u6559\u5927\u5bb6\u5b66\u4e60\u300aRedis \u54e8\u5175\u96c6\u7fa4\u7684\u5b9e\u73b0\u300b\uff0c\u5728\u5b9e\u73b0\u529f\u80fd\u7684\u8fc7\u7a0b\u4e2d\u4e5f\u5e26\u5927\u5bb6\u91cd\u65b0\u6e29\u4e60\u76f8\u5173\u77e5\u8bc6\u70b9\uff0c\u6e29\u6545\u800c\u77e5\u65b0\uff0c\u56de\u5934\u770b\u770b\u8bf4\u4e0d\u5b9a\u53c8\u6709\u4e0d\u4e00\u6837\u7684\u611f\u609f\uff01<\/p>\n<h2>1\u3001Sentinel \u54e8\u5175<\/h2>\n<p>\u3000\u3000\u3000\u3000Sentinel\uff08\u54e8\u5175\uff09\u662fRedis \u7684\u9ad8\u53ef\u7528\u6027\u89e3\u51b3\u65b9\u6848\uff1a\u7531\u4e00\u4e2a\u6216\u591a\u4e2aSentinel \u5b9e\u4f8b \u7ec4\u6210\u7684Sentinel \u7cfb\u7edf\u53ef\u4ee5\u76d1\u89c6\u4efb\u610f\u591a\u4e2a\u4e3b\u670d\u52a1\u5668\uff0c\u4ee5\u53ca\u8fd9\u4e9b\u4e3b\u670d\u52a1\u5668\u5c5e\u4e0b\u7684\u6240\u6709\u4ece\u670d\u52a1\u5668\uff0c\u5e76\u5728\u88ab\u76d1\u89c6\u7684\u4e3b\u670d\u52a1\u5668\u8fdb\u5165\u4e0b\u7ebf\u72b6\u6001\u65f6\uff0c\u81ea\u52a8\u5c06\u4e0b\u7ebf\u4e3b\u670d\u52a1\u5668\u5c5e\u4e0b\u7684\u67d0\u4e2a\u4ece\u670d\u52a1\u5668\u5347\u7ea7\u4e3a\u65b0\u7684\u4e3b\u670d\u52a1\u5668\u3002<\/p>\n<p>\u3000\u3000\u3000\u3000\u4f8b\u5982\uff1a<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077663b18ea81c5c7.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000\u3000\u3000\u5728Server1 \u6389\u7ebf\u540e\uff1a<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077663b18ea87a1ab.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000\u3000\u3000\u5347\u7ea7Server2 \u4e3a\u65b0\u7684\u4e3b\u670d\u52a1\u5668\uff1a<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077663b18ea8d6e38.png\" class=\"aligncenter\"><\/p>\n<h2>2\u3001Redis \u4e3b\u4ece\u5206\u79bb<\/h2>\n<p>\u3000\u5728\u8bb2\u89e3Sentinel \u54e8\u5175\u96c6\u7fa4\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u6765\u642d\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u4e3b\u4ece\u5206\u79bb\uff08\u8bfb\u5199\u5206\u79bb\uff09\u3002<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u9ed8\u8ba4\u5927\u5bb6\u90fd\u5df2\u7ecf\u5b89\u88c5\u4e86redis\uff0c\u7136\u540e\u6211\u4eec\u5c06redis.conf \u62f7\u8d1d\u591a\u4efd\uff0c\u5e76\u4e14\u521b\u5efa\u591a\u4e2a\u76ee\u5f55\uff0c\u7528\u4e8e\u533a\u5206\u591a\u4e2aredis \u670d\u52a1\uff1a<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077763b18ea9422c6.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u8fd9\u91cc\u9762\uff0c\u6bcf\u4e2a\u76ee\u5f55\u4e2d\u90fd\u6709\u81ea\u5df1\u7684redis.conf \u914d\u7f6e\u6587\u4ef6\uff0c\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5148\u8bbe\u7f6e\u4e3b\u670d\u52a1\u5668\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<h3>\u4e00\u3001\u914d\u7f6eMaster<\/h3>\n<p>1\u3001\u4fee\u6539\u7aef\u53e3<\/p>\n<pre>\n# Accept connections on the specified port, default is 6379 (IANA #815344).\n# If port 0 is specified Redis will not listen on a TCP socket.\nport 6380<\/pre>\n<p>\u3000\u3000redis \u7684\u9ed8\u8ba4\u7aef\u53e3\u662f6379\uff0c\u8fd9\u91cc\u6211\u4eec\u628a\u4e3b\u670d\u52a1\u5668\u7684\u7aef\u53e3\u8bbe\u7f6e\u4e3a6380<\/p>\n<p>\u30002\u3001\u4fee\u6539pidfile<\/p>\n<pre>\n# If a pid file is specified, Redis writes it where specified at startup\n# and removes it at exit.\n#\n# When the server runs non daemonized, no pid file is created if none is\n# specified in the configuration. When the server is daemonized, the pid file\n# is used even if not specified, defaulting to \"\/var\/run\/redis.pid\".\n#\n# Creating a pid file is best effort: if Redis is not able to create it\n# nothing bad happens, the server will start and run normally.\npidfile \/var\/run\/redis_6380.pid<\/pre>\n<p>\u3000\u3000pidfile \u662f\u6211\u4eec\u542f\u52a8redis \u7684\u65f6\u5019\uff0clinux \u4e3a\u6211\u4eec\u5206\u914d\u7684\u4e00\u4e2apid \u8fdb\u7a0b\u53f7\uff0c\u5982\u679c\u8fd9\u91cc\u4e0d\u4f5c\u4fee\u6539\uff0c\u4f1a\u5f71\u54cd\u540e\u9762redis\u670d\u52a1\u7684\u542f\u52a8<\/p>\n<p>3\u3001\u542f\u52a8 redis<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077763b18ea99a6ae.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000\u542f\u52a8redis\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0credis\u5df2\u7ecf\u5360\u9886\u4e866380 \u7aef\u53e3<\/p>\n<p>\u3000\u3000\u8fdb\u5165\u5ba2\u6237\u7aef<\/p>\n<pre>\nredis-cli -p 6380\n127.0.0.1:6380&gt; info\n...\n# Replication\nrole:master\nconnected_slaves:0\nmaster_repl_offset:0\nrepl_backlog_active:0\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:0\nrepl_backlog_histlen:0\n...<\/pre>\n<p>\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0credis \u73b0\u5728\u7684\u89d2\u8272\u662f\u4e00\u4e2amaster \u542f\u52a8\u7684\u670d\u52a1\u3002<\/p>\n<h3>\u4e8c\u3001\u914d\u7f6eSlave<\/h3>\n<p>\u3000\u3000\u548c\u4e0a\u9762\u914d\u7f6e master\u4e00\u6837\uff0c\u6211\u4eec\u9700\u8981\u4fee\u6539\u7aef\u53e3\u53f7\u548cpid \u6587\u4ef6\uff0c\u5728\u4fee\u6539\u5b8c\u4e4b\u540e\uff0c\u6211\u4eec\u6709\u4e24\u79cd\u65b9\u6cd5\u914d\u7f6e\u4ece\u670d\u52a1<\/p>\n<h4>\u3000\u30001\u3001\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u4ece\u670d\u52a1<\/h4>\n<pre>\n################################# REPLICATION #################################\n\n# Master-Slave replication. Use slaveof to make a Redis instance a copy of\n# another Redis server. A few things to understand ASAP about Redis replication.\n#\n# 1) Redis replication is asynchronous, but you can configure a master to\n#    stop accepting writes if it appears to be not connected with at least\n#    a given number of slaves.\n# 2) Redis slaves are able to perform a partial resynchronization with the\n#    master if the replication link is lost for a relatively small amount of\n#    time. You may want to configure the replication backlog size (see the next\n#    sections of this file) with a sensible value depending on your needs.\n# 3) Replication is automatic and does not need user intervention. After a\n#    network partition slaves automatically try to reconnect to masters\n#    and resynchronize with them.\n#\n# slaveof \n   \n    \n      slaveof 127.0.0.1 6380\n    \n   <\/pre>\n<p>\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u76f4\u63a5\u4fee\u6539 slaveof \u5c5e\u6027\uff0c\u6211\u4eec\u76f4\u63a5\u914d\u7f6e\u4e3b\u670d\u52a1\u5668\u7684ip \u5730\u5740\uff0c\u548c\u7aef\u53e3\u53f7\uff0c\u5982\u679c\u8fd9\u91cc\u4e3b\u670d\u52a1\u5668\u6709\u914d\u7f6e\u5bc6\u7801<\/p>\n<p>\u3000\u3000\u53ef\u4ee5\u901a\u8fc7\u914d\u7f6emasterauth \u6765\u8bbe\u7f6e\u94fe\u63a5\u5bc6\u7801<\/p>\n<pre>\n# If the master is password protected (using the \"requirepass\" configuration\n# directive below) it is possible to tell the slave to authenticate before\n# starting the replication synchronization process, otherwise the master will\n# refuse the slave request.\n#\n# masterauth \n   <\/pre>\n<p>\u542f\u52a8redis \u670d\u52a1\uff1a<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077863b18eaa01194.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u73b0\u5728\u6709\u4e24\u4e2a\u73b0\u5728\u5728\u8fd0\u884c\uff0c\u6211\u4eec\u8fdb\u51656381\u7684\u5ba2\u6237\u7aef\uff0c\u770b\u4e00\u4e0b\u4ed6\u7684\u72b6\u6001\uff0c<\/p>\n<pre>\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6380\nmaster_link_status:up\nmaster_last_io_seconds_ago:1\nmaster_sync_in_progress:0\nslave_repl_offset:71\nslave_priority:100\nslave_read_only:1\nconnected_slaves:0\nmaster_repl_offset:0\nrepl_backlog_active:0\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:0\nrepl_backlog_histlen:0<\/pre>\n<p>\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u73b0\u5728\u7684redis \u662f\u4e00\u4e2a\u4ece\u670d\u52a1\u7684\u89d2\u8272\uff0c\u8fde\u63a5\u77406380\u7684\u670d\u52a1\u3002<\/p>\n<h4>\u3000\u30002\u3001\u5728\u670d\u52a1\u542f\u52a8\u540e\u8bbe\u7f6e<\/h4>\n<p>\u3000\u3000\u3000\u3000\u6211\u4eec\u4fee\u65396382\u7aef\u53e3\u7684\u670d\u52a1\u5668\u914d\u7f6e\u6587\u4ef6\u4e4b\u540e\uff0c\u542f\u52a8\u670d\u52a1<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077863b18eaa6000c.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000\u3000\u3000\u8fdb\u5165\u5ba2\u6237\u7aef\uff0c\u67e5\u770b\u5f53\u524d\u670d\u52a1\u5668\u7684\u72b6\u6001\uff1a<\/p>\n<pre>\n# Replication\nrole:master\nconnected_slaves:0\nmaster_repl_offset:0\nrepl_backlog_active:0\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:0\nrepl_backlog_histlen:0<\/pre>\n<p>\u3000\u3000\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u5f53\u524d\u670d\u52a1\u5668\u7684\u72b6\u6001\u65f6\u4f5c\u4e3a\u4e00\u4e2a\u4e3b\u670d\u52a1\u7684\u89d2\u8272\u5728\u8fd0\u884c\uff0c\u6211\u4eec\u63a5\u4e0b\u6765\u4fee\u6539\u4ed6\u7684\u72b6\u6001\uff1a<\/p>\n<pre>\n127.0.0.1:6382&gt; slaveof 127.0.0.1 6380\n\n\/\/\u4fee\u6539\u540e\u72b6\u6001\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6380\nmaster_link_status:up\nmaster_last_io_seconds_ago:1\nmaster_sync_in_progress:0\nslave_repl_offset:617\nslave_priority:100\nslave_read_only:1\nconnected_slaves:0\nmaster_repl_offset:0\nrepl_backlog_active:0\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:0\nrepl_backlog_histlen:0<\/pre>\n<h4>\u3000\u30003\u3001\u603b\u7ed3<\/h4>\n<p>\u3000\u3000\u3000\u6211\u4eec\u5148\u770b\u4e00\u4e0b\u76ee\u524dmaster \u7684\u72b6\u6001\uff1a<\/p>\n<pre>\n# Replication\nrole:master\nconnected_slaves:2\nslave0:ip=127.0.0.1,port=6381,state=online,offset=785,lag=0\nslave1:ip=127.0.0.1,port=6382,state=online,offset=785,lag=0\nmaster_repl_offset:785\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:2\nrepl_backlog_histlen:784<\/pre>\n<p>\u3000\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u53ef\u4ee5\u770b\u5230\uff0c\u4e24\u4e2a\u4ece\u670d\u52a1\u5df2\u7ecf\u5728\u8fde\u7740\u4e3b\u670d\u52a1\u5668\uff0c\u4e0a\u9762\u4e24\u79cd\u914d\u7f6e\u7684\u533a\u522b\u5728\u4e8e\uff0c\u5f53salve \u65ad\u7ebf\u91cd\u8fde\u4e4b\u540e\uff0c<\/p>\n<p>\u3000\u3000\u3000\u5982\u679c\u6211\u4eec\u662f\u4fee\u6539\u7c7b\u914d\u7f6e\u6587\u4ef6\uff0c\u91cd\u8fde\u4e4b\u540e\u4f1a\u81ea\u5df1\u94fe\u63a5\u4e0a\u53bbmaster\uff0c\u5e76\u4e14\u540c\u6b65master \u4e0a\u9762\u7684\u6570\u636e\uff0c<\/p>\n<p>\u3000\u3000\u3000\u5982\u679c\u6211\u4eec\u662f\u624b\u52a8\u8fde\u63a5\u4e0a\u53bb\u7684\u4e3b\u670d\u52a1\u5668\uff0c\u91cd\u8fde\u4e4b\u540e\uff0c\u4ece\u670d\u52a1\u5668\u4f1a\u8bfb\u53d6\u81ea\u5df1\u672c\u5730\u7684 rdb \u56de\u590d\u6570\u636e\uff0c\u800c\u4e0d\u4f1a\u53bb\u81ea\u52a8\u94fe\u63a5\u4e3b\u670d\u52a1<\/p>\n<p>\u3000\u3000 \u6211\u4eec\u5982\u679c\u9700\u8981\u8bbe\u7f6e\u8bfb\u5199\u5206\u79bb\uff0c\u53ea\u9700\u8981\u5728\u4e3b\u670d\u52a1\u5668\u4e2d\u8bbe\u7f6e\uff1a<\/p>\n<pre>\n# Note: read only slaves are not designed to be exposed to untrusted clients\n# on the internet. It's just a protection layer against misuse of the instance.\n# Still a read only slave exports by default all the administrative commands\n# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve\n# security of read only slaves using 'rename-command' to shadow all the\n# administrative \/ dangerous commands.\nslave-read-only yes<\/pre>\n<h2>3\u3001Sentinel \u54e8\u5175<\/h2>\n<h3>\u3000\u30001\u3001\u914d\u7f6e\u7aef\u53e3<\/h3>\n<p>\u3000\u3000\u3000 \u5728sentinel.conf \u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c \u6211\u4eec\u53ef\u4ee5\u627e\u5230port \u5c5e\u6027\uff0c\u8fd9\u91cc\u662f\u7528\u6765\u8bbe\u7f6esentinel \u7684\u7aef\u53e3\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u81f3\u5c11\u4f1a\u9700\u8981\u4e09\u4e2a\u54e8\u5175\u5bf9redis \u8fdb\u884c\u76d1\u63a7\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4fee\u6539\u7aef\u53e3\u542f\u52a8\u591a\u4e2asentinel \u670d\u52a1\u3002<\/p>\n<pre>\n# port \n   \n    \n# The port that this sentinel instance will run on\nport 26379\n   <\/pre>\n<h3>\u3000\u30002\u3001\u914d\u7f6e\u4e3b\u670d\u52a1\u5668\u7684ip \u548c\u7aef\u53e3<\/h3>\n<p>\u3000\u3000\u3000\u6211\u4eec\u628a\u76d1\u542c\u7684\u7aef\u53e3\u4fee\u6539\u62106380\uff0c\u5e76\u4e14\u52a0\u4e0a\u6743\u503c\u4e3a2\uff0c\u8fd9\u91cc\u7684\u6743\u503c\uff0c\u662f\u7528\u6765\u8ba1\u7b97\u6211\u4eec\u9700\u8981\u5c06\u54ea\u4e00\u53f0\u670d\u52a1\u5668\u5347\u7ea7\u5347\u4e3b\u670d\u52a1\u5668<\/p>\n<pre>\n# sentinel monitor \n   \n    \n     \n      \n        # # Tells Sentinel to monitor this master, and to consider it in O_DOWN # (Objectively Down) state only if at least \n       \n         sentinels agree. # # Note that whatever is the ODOWN quorum, a Sentinel will require to # be elected by the majority of the known Sentinels in order to # start a failover, so no failover can be performed in minority. # # Slaves are auto-discovered, so you don't need to specify slaves in # any way. Sentinel itself will rewrite this configuration file adding # the slaves using additional configuration options. # Also note that the configuration file is rewritten when a # slave is promoted to master. # # Note: master name should not include special characters or spaces. # The valid charset is A-z 0-9 and the three characters \".-_\". sentinel monitor mymaster 127.0.0.1 6380 2\n       \n      \n     \n    \n   <\/pre>\n<h3>\u3000\u30003\u3001\u542f\u52a8Sentinel<\/h3>\n<pre>\n\/sentinel$ redis-sentinel sentinel.conf<\/pre>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077863b18eaab8e87.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000sentinel \u542f\u52a8\u4e4b\u540e\uff0c\u5c31\u4f1a\u76d1\u89c6\u5230\u73b0\u5728\u6709\u4e00\u4e2a\u4e3b\u670d\u52a1\u5668\uff0c\u4e24\u4e2a\u4ece\u670d\u52a1\u5668<\/p>\n<p>\u3000\u3000\u5f53\u6211\u4eec\u628a\u5176\u4e2d\u4e00\u4e2a\u4ece\u670d\u52a1\u5668\u5668\u5173\u95ed\u4e4b\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u65e5\u5fd7\uff1a<\/p>\n<pre>\n10894:X 30 Dec 16:27:03.670 # +sdown slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380<\/pre>\n<p>\u3000\u3000\u65e5\u5fd7\u8868\u793a\uff0c6381\u8fd9\u4e2a\u4ece\u670d\u52a1\u5668\u5df2\u7ecf\u4ece\u4e3b\u670d\u52a1\u5668\u4e2d\u8131\u79bb\u4e86\u51fa\u6765\uff0c\u6211\u4eec\u91cd\u65b0\u628a6381 \u63a5\u56de\u53bb\u3002<\/p>\n<pre>\n10894:X 30 Dec 16:28:43.288 * +reboot slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380\n10894:X 30 Dec 16:28:43.365 # -sdown slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380\n <\/pre>\n<h3>\u3000\u30004\u3001\u5173\u95edMaster<\/h3>\n<p>\u3000\u3000\u3000\u3000\u6211\u4eec\u624b\u52a8\u5173\u95edMaster \u4e4b\u540e\uff0csentinel \u5728\u76d1\u542cmaster \u786e\u5b9e\u662f\u65ad\u7ebf\u4e86\u4e4b\u540e\uff0c\u5c06\u4f1a\u5f00\u59cb\u8ba1\u7b97\u6743\u503c\uff0c\u7136\u540e\u91cd\u65b0\u5206\u914d\u4e3b\u670d\u52a1\u5668<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077963b18eab26030.png\" class=\"aligncenter\"><\/p>\n<p>\u3000\u3000\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c6380\u4e3b\u670d\u52a1\u5668\u65ad\u4e86\u4e4b\u540e\uff0csentinel \u5e2e\u6211\u4eec\u9009\u4e866382\u4f5c\u4e3a\u65b0\u7684\u4e3b\u670d\u52a1\u5668<\/p>\n<p>\u3000\u3000\u3000 \u6211\u4eec\u8fdb\u52306382\u7684\u5ba2\u6237\u7aef\uff0c\u67e5\u770b\u4ed6\u7684\u72b6\u6001\uff1a<\/p>\n<pre>\n# Replication\nrole:master\nconnected_slaves:1\nslave0:ip=127.0.0.1,port=6381,state=online,offset=13751,lag=0\nmaster_repl_offset:13751\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:2\nrepl_backlog_histlen:13750<\/pre>\n<p>\u3000\u3000\u3000\u3000\u6211\u4eec\u53ef\u4ee5\u770b\u5230 6382\uff0c\u91cdslave \u8363\u5347\u4e3amaster<\/p>\n<pre>\n127.0.0.1:6382&gt; set name jaycekon\nOK<\/pre>\n<p>\u3000\u3000\u3000\u3000\u539f\u672c\u7684\u6ca1\u6709\u6743\u9650\u5199\uff0c\u4e5f\u5f97\u5230\u4e86\u76f8\u5e94\u7684\u6743\u9650<\/p>\n<h3>\u3000\u30005\u3001\u91cd\u8fdeMaster<\/h3>\n<p>\u3000\u3000\u3000\u3000\u5927\u5bb6\u53ef\u80fd\u4f1a\u597d\u5947\uff0c\u5982\u679cmaster \u91cd\u8fde\u4e4b\u540e\uff0c\u4f1a\u4e0d\u4f1a\u62a2\u56de\u5c5e\u4e8e\u4ed6\u7684\u4f4d\u7f6e\uff0c\u7b54\u6848\u662f\u5426\u5b9a\u7684\uff0c\u5c31\u6bd4\u5982\u4f60\u88ab\u4e00\u4e2a\u5c0f\u5f1f\u62a2\u4e86\u4f60\u8001\u5927\u7684\u4f4d\u7f6e\uff0c\u4ed6\u80af\u7ed9\u56de\u4f60\u8fd9\u4e2a\u4f4d\u7f6e\u5417\u3002\u56e0\u6b64\u5f53master \u56de\u6765\u4e4b\u540e\uff0c\u4ed6\u4e5f\u53ea\u80fd\u5f53\u4e2a\u5c0f\u5f1f\u3000\u3000<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/www.17golang.com\/uploads\/20230101\/167258077963b18eab80579.png\" class=\"aligncenter\"><\/p>\n<h2>4\u3001Sentinel \u603b\u7ed3<\/h2>\n<h3>\u4e00\u3001Sentinel\u7684\u4f5c\u7528\uff1a<\/h3>\n<p>A\u3001Master \u72b6\u6001\u76d1\u6d4b<\/p>\n<p>B\u3001\u5982\u679cMaster \u5f02\u5e38\uff0c\u5219\u4f1a\u8fdb\u884cMaster-slave \u8f6c\u6362\uff0c\u5c06\u5176\u4e2d\u4e00\u4e2aSlave\u4f5c\u4e3aMaster\uff0c\u5c06\u4e4b\u524d\u7684Master\u4f5c\u4e3aSlave<\/p>\n<p>C\u3001Master-Slave\u5207\u6362\u540e\uff0cmaster_redis.conf\u3001slave_redis.conf\u548csentinel.conf\u7684\u5185\u5bb9\u90fd\u4f1a\u53d1\u751f\u6539\u53d8\uff0c\u5373master_redis.conf\u4e2d\u4f1a\u591a\u4e00\u884cslaveof\u7684\u914d\u7f6e\uff0csentinel.conf\u7684\u76d1\u63a7\u76ee\u6807\u4f1a\u968f\u4e4b\u8c03\u6362<\/p>\n<h3>\u4e8c\u3001Sentinel\u7684\u5de5\u4f5c\u65b9\u5f0f:<\/h3>\n<p>1)\uff1a\u6bcf\u4e2aSentinel\u4ee5\u6bcf\u79d2\u949f\u4e00\u6b21\u7684\u9891\u7387\u5411\u5b83\u6240\u77e5\u7684Master\uff0cSlave\u4ee5\u53ca\u5176\u4ed6 Sentinel \u5b9e\u4f8b\u53d1\u9001\u4e00\u4e2a PING \u547d\u4ee4<br \/> 2)\uff1a\u5982\u679c\u4e00\u4e2a\u5b9e\u4f8b\uff08instance\uff09\u8ddd\u79bb\u6700\u540e\u4e00\u6b21\u6709\u6548\u56de\u590d PING \u547d\u4ee4\u7684\u65f6\u95f4\u8d85\u8fc7 down-after-milliseconds \u9009\u9879\u6240\u6307\u5b9a\u7684\u503c\uff0c \u5219\u8fd9\u4e2a\u5b9e\u4f8b\u4f1a\u88ab Sentinel \u6807\u8bb0\u4e3a\u4e3b\u89c2\u4e0b\u7ebf\u3002<br \/> 3)\uff1a\u5982\u679c\u4e00\u4e2aMaster\u88ab\u6807\u8bb0\u4e3a\u4e3b\u89c2\u4e0b\u7ebf\uff0c\u5219\u6b63\u5728\u76d1\u89c6\u8fd9\u4e2aMaster\u7684\u6240\u6709 Sentinel \u8981\u4ee5\u6bcf\u79d2\u4e00\u6b21\u7684\u9891\u7387\u786e\u8ba4Master\u7684\u786e\u8fdb\u5165\u4e86\u4e3b\u89c2\u4e0b\u7ebf\u72b6\u6001\u3002<br \/> 4)\uff1a\u5f53\u6709\u8db3\u591f\u6570\u91cf\u7684 Sentinel\uff08\u5927\u4e8e\u7b49\u4e8e\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\u7684\u503c\uff09\u5728\u6307\u5b9a\u7684\u65f6\u95f4\u8303\u56f4\u5185\u786e\u8ba4Master\u7684\u786e\u8fdb\u5165\u4e86\u4e3b\u89c2\u4e0b\u7ebf\u72b6\u6001\uff0c \u5219Master\u4f1a\u88ab\u6807\u8bb0\u4e3a\u5ba2\u89c2\u4e0b\u7ebf<br \/> 5)\uff1a\u5728\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c \u6bcf\u4e2a Sentinel \u4f1a\u4ee5\u6bcf 10 \u79d2\u4e00\u6b21\u7684\u9891\u7387\u5411\u5b83\u5df2\u77e5\u7684\u6240\u6709Master\uff0cSlave\u53d1\u9001 INFO \u547d\u4ee4<br \/> 6)\uff1a\u5f53Master\u88ab Sentinel \u6807\u8bb0\u4e3a\u5ba2\u89c2\u4e0b\u7ebf\u65f6\uff0cSentinel \u5411\u4e0b\u7ebf\u7684 Master \u7684\u6240\u6709 Slave \u53d1\u9001 INFO \u547d\u4ee4\u7684\u9891\u7387\u4f1a\u4ece 10 \u79d2\u4e00\u6b21\u6539\u4e3a\u6bcf\u79d2\u4e00\u6b21<br \/> 7)\uff1a\u82e5\u6ca1\u6709\u8db3\u591f\u6570\u91cf\u7684 Sentinel \u540c\u610f Master \u5df2\u7ecf\u4e0b\u7ebf\uff0c Master \u7684\u5ba2\u89c2\u4e0b\u7ebf\u72b6\u6001\u5c31\u4f1a\u88ab\u79fb\u9664\u3002<br \/> \u82e5 Master \u91cd\u65b0\u5411 Sentinel \u7684 PING \u547d\u4ee4\u8fd4\u56de\u6709\u6548\u56de\u590d\uff0c Master \u7684\u4e3b\u89c2\u4e0b\u7ebf\u72b6\u6001\u5c31\u4f1a\u88ab\u79fb\u9664\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redis \u54e8\u5175\u96c6\u7fa4\u7684\u5b9e\u73b0 \u6536\u85cf&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[],"class_list":["post-201298","post","type-post","status-publish","format-standard","hentry","category-database"],"_links":{"self":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/201298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/comments?post=201298"}],"version-history":[{"count":0,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/201298\/revisions"}],"wp:attachment":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/media?parent=201298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/categories?post=201298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/tags?post=201298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}