{"id":201318,"date":"2025-05-10T08:40:58","date_gmt":"2025-05-10T00:40:58","guid":{"rendered":"https:\/\/server.hk\/cnblog\/201318\/"},"modified":"2025-05-10T08:40:58","modified_gmt":"2025-05-10T00:40:58","slug":"redis-%e5%93%a8%e5%85%b5%e9%ab%98%e6%a8%a1%e5%bc%8f%e6%90%ad%e5%bb%ba%e5%8f%8ajava%e4%bb%a3%e7%a0%81%e9%85%8d%e7%bd%ae","status":"publish","type":"post","link":"https:\/\/server.hk\/cnblog\/201318\/","title":{"rendered":"Redis \u54e8\u5175\u9ad8\u6a21\u5f0f\u642d\u5efa\u53caJava\u4ee3\u7801\u914d\u7f6e"},"content":{"rendered":"<p><b><\/b> <\/p>\n<h1>Redis \u54e8\u5175\u9ad8\u6a21\u5f0f\u642d\u5efa\u53caJava\u4ee3\u7801\u914d\u7f6e<\/h1>\n<p><span style=\"cursor: pointer\"><i><\/i>\u6536\u85cf<\/span> <\/p>\n<p>\u5728\u6570\u636e\u5e93\u5b9e\u6218\u5f00\u53d1\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u4f1a\u9047\u5230\u4e00\u4e9b\u8fd9\u6837\u90a3\u6837\u7684\u95ee\u9898\uff0c\u7136\u540e\u8981\u5361\u597d\u534a\u5929\uff0c\u7b49\u95ee\u9898\u89e3\u51b3\u4e86\u624d\u53d1\u73b0\u539f\u6765\u4e00\u4e9b\u7ec6\u8282\u77e5\u8bc6\u70b9\u8fd8\u662f\u6ca1\u6709\u638c\u63e1\u597d\u3002\u4eca\u5929golang\u5b66\u4e60\u7f51\u5c31\u6574\u7406\u5206\u4eab\u300aRedis \u54e8\u5175\u9ad8\u6a21\u5f0f\u642d\u5efa\u53caJava\u4ee3\u7801\u914d\u7f6e\u300b\uff0c\u804a\u804a\u9ad8\u53ef\u7528\u3001Redis\u54e8\u5175\uff0c\u5e0c\u671b\u53ef\u4ee5\u5e2e\u52a9\u5230\u6b63\u5728\u52aa\u529b\u8d5a\u94b1\u7684\u4f60\u3002<\/p>\n<p><\/p>\n<h3>\u51c6\u5907\u914d\u7f6e\u6587\u4ef6<br \/><\/h3>\n<pre>\n# \u914d\u7f6e\u6587\u4ef6\u8fdb\u884c\u4e86\u7cbe\u7b80\uff0c\u5b8c\u6574\u914d\u7f6e\u53ef\u81ea\u884c\u548c\u5b98\u65b9\u63d0\u4f9b\u7684\u5b8c\u6574conf\u6587\u4ef6\u8fdb\u884c\u5bf9\u7167\u3002\u7aef\u53e3\u53f7\u81ea\u884c\u5bf9\u5e94\u4fee\u6539\n# \u540e\u53f0\u542f\u52a8\u7684\u610f\u601d\ndaemonize yes \n \n# \u7aef\u53e3\u53f7\nport 6380\n \n# IP\u7ed1\u5b9a\uff0credis\u4e0d\u5efa\u8bae\u5bf9\u516c\u7f51\u5f00\u653e\uff0c\u76f4\u63a5\u7ed1\u5b9a0.0.0.0\u6ca1\u6bdb\u75c5\nbind 0.0.0.0\n \n# redis\u6570\u636e\u6587\u4ef6\u5b58\u653e\u7684\u76ee\u5f55\ndir \/usr\/local\/redis\/data\n \n# \u5f00\u542fAOF\nappendonly yes\n \n# \u5f00\u542f\u96c6\u7fa4\ncluster-enabled yes\n \n# \u4f1a\u81ea\u52a8\u751f\u6210\u5728\u4e0a\u9762\u914d\u7f6e\u7684dir\u76ee\u5f55\u4e0b\ncluster-config-file nodes-6381.conf \ncluster-node-timeout 5000\n \n# \u8fd9\u4e2a\u6587\u4ef6\u4f1a\u81ea\u52a8\u751f\u6210\npidfile \/var\/run\/redis_6381.pid \n<\/pre>\n<h3>\u5206\u522b\u51c6\u5907\u4e09\u4e2aserver\u7684\u914d\u7f6e\u6587\u4ef6 <br \/><\/h3>\n<pre>\n[root@hadoop-master conf]# ll |grep redis | grep -v 6379\n-rw-r--r-- 1 root root  489 7\u6708 28 14:49 redis-6380.conf\n-rw-r--r-- 1 root root  571 7\u6708 28 18:09 redis-6381.conf\n-rw-r--r-- 1 root root  600 7\u6708 28 18:09 redis-6382.conf\n<\/pre>\n<h3>\u542f\u52a8\u4e09\u4e2aserver&nbsp;<br \/><\/h3>\n<pre>\n #\u4f7f\u7528 redis-server \u547d\u4ee4\uff0c\u5e76\u6307\u5b9a\u914d\u7f6e\u6587\u4ef6\n \/mnt\/redis\/bin\/redis-server \/mnt\/redis\/conf\/redis-6380.conf\n \n \/mnt\/redis\/bin\/redis-server \/mnt\/redis\/conf\/redis-6381.conf\n \n \/mnt\/redis\/bin\/redis-server \/mnt\/redis\/conf\/redis-6382.conf\n<\/pre>\n<h3>\u914d\u7f6e\u4e3b\u4ece<br \/><\/h3>\n<pre>\n#\u901a\u8fc7 redis-cli\u5ba2\u6237\u7aef\u547d\u4ee4\u5c06\u6307\u5b9a\u7aef\u53e3\u4e0b\u7684\u670d\u52a1\u4f5c\u4e3a\u6307\u5b9aip\u7aef\u53e3\u4e0b\u7684\u4ece\u5c5e\u8282\u70b9\n\/mnt\/redis\/bin\/redis-cli -p 6381 192.168.16.40 6380\n\/mnt\/redis\/bin\/redis-cli -p 6382 192.168.16.40 6380\n#\u6b64\u65f66380\u4e3a\u4e3b\u8282\u70b9\u5176\u4ed6\u8282\u70b9\u4e3a\u4ece\u5c5e\u8282\u70b9<\/pre>\n<h3>\u68c0\u67e5\u96c6\u7fa4\u662f\u5426\u5df2\u7ecf\u5c31\u7eea<br \/><\/h3>\n<pre>\n# \u6b64\u547d\u4ee4\u53ef\u67e5\u770bredis\u96c6\u7fa4\u4e2d\u7684 server\/Clients\/memory\/persistence\/stats\n#             replication\/cpu\/modules\/cluster\/keyspace\u7b49\u4fe1\u606f\n\/mnt\/redis\/bin\/redis-cli -p 6380 info \n \n# \u901a\u8fc7\u6307\u5b9areplication\u83b7\u53d6\u96c6\u7fa4\u4fe1\u606f\n\/mnt\/redis\/bin\/redis-cli -p 6380 info replication\n<\/pre>\n<h3>redis-cli info \u547d\u4ee4\u5404\u6570\u503c\u542b\u4e49\u5bf9\u7167&nbsp;<br \/><\/h3>\n<pre>\n# Server\nredis_version:3.2.0 #redis \u7248\u672c\nredis_git_sha1:00000000\nredis_git_dirty:0\nredis_build_id:85def9ed04ebeee4\nredis_mode:cluster #\u8fd0\u884c\u6a21\u5f0f(standalone,cluster)\nos:Linux 3.0.13-0.27-default x86_64 #\u8fd0\u884c\u7cfb\u7edf\u5185\u6838\u7248\u672c\narch_bits:64 #\u5b57\u957f\nmultiplexing_api:epoll #Redis\u4f7f\u7528\u7684\u4e8b\u4ef6\u5904\u7406\u673a\u5236\ngcc_version:4.3.4 #\u7f16\u8bd1Redis\u65f6\u6240\u4f7f\u7528\u7684GCC\u7248\u672c\nprocess_id:26327 #Redis\u8fdb\u7a0bPID\nrun_id:e833bf79e98daa5b5917c510b4d9f056cfc5059c #Redis\u670d\u52a1\u5668\u7684\u7f16\u53f7\uff08\u7528\u4e8e\u96c6\u7fa4\uff09\ntcp_port:7001 #\u76d1\u542c\u7684\u7aef\u53e3\nuptime_in_seconds:587882 #\u5df2\u8fd0\u884c\u79d2\u6570\nuptime_in_days:6 #\u5df2\u8fd0\u884c\u5929\u6570\nhz:10 #\u7528\u4e8e\u6267\u884c\u540e\u53f0\u4efb\u52a1\u7684\u51fd\u6570\u88ab\u8c03\u7528\u7684\u9891\u7387\nlru_clock:10570417 #\u7528\u4e8eLRU\u7ba1\u7406\u7684\u8ba1\u65f6\u5668\uff0c\u5355\u4f4d\u4e3a\u5206\u949f\nexecutable:\/home\/rediscluster\/7001\/redis\/.\/bin\/redis-server #bin\u6587\u4ef6\u4f4d\u7f6e\nconfig_file:\/home\/rediscluster\/7001\/redis\/.\/config\/redis.conf #\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\n \n# Clients\nconnected_clients:1 #\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\u6570\nclient_longest_output_list:0 #\u5f53\u524d\u5ba2\u6237\u7aef\u8fde\u63a5\u4e2d\u6700\u957f\u7684\u8f93\u51fa\u5217\u8868\nclient_biggest_input_buf:0 #\u5f53\u524d\u5ba2\u6237\u7aef\u8fde\u63a5\u4e2d\u6700\u5927\u7684\u8f93\u5165\u7f13\u5b58\nblocked_clients:0 #\u963b\u585e\u7684\u5ba2\u6237\u7aef\u6570\n \n# Memory\nused_memory:2421816 #\u6d88\u8017\u7684\u5185\u5b58\nused_memory_human:2.31M\nused_memory_rss:3973120 #\u64cd\u4f5c\u7cfb\u7edf\u5206\u914d\u7ed9Redis\u7684\u5185\u5b58\nused_memory_rss_human:3.79M\nused_memory_peak:2421816 #\u5185\u5b58\u6d88\u8017\u7684\u5cf0\u503c\nused_memory_peak_human:2.31M\ntotal_system_memory:8250241024 #\u7cfb\u7edf\u603b\u5185\u5b58\ntotal_system_memory_human:7.68G\nused_memory_lua:37888 #Lua\u811a\u672c\u6d88\u8017\u7684\u5185\u5b58\nused_memory_lua_human:37.00K\nmaxmemory:0 #\u5185\u5b58\u4f7f\u7528\u9650\u5236\nmaxmemory_human:0B\nmaxmemory_policy:noeviction #\u8d85\u51fa\u5185\u5b58\u9650\u5236\u65f6\u7684\u884c\u4e3a\nmem_fragmentation_ratio:1.64 #\u5185\u5b58\u788e\u7247\u7387\uff08=used_memory_rss\/used_memory\uff09\nmem_allocator:jemalloc-4.0.3 #\u5185\u5b58\u5206\u914d\u5668\n \n# Persistence\nloading:0 #\u662f\u5426\u6b63\u5728\u8f7d\u5165\u6301\u4e45\u5316\u6587\u4ef6\nrdb_changes_since_last_save:0 #\u4e0a\u6b21\u6301\u4e45\u5316\u4ee5\u6765\u4fee\u6539\u7684\u952e\u503c\u6570\nrdb_bgsave_in_progress:0 #\u662f\u5426\u6b63\u5728\u540e\u53f0\u4fdd\u5b58RDB\u6587\u4ef6\nrdb_last_save_time:1469670746 #\u4e0a\u6b21RDB\u6301\u4e45\u5316\u7684\u65f6\u95f4\u6233\nrdb_last_bgsave_status:ok #\u4e0a\u6b21RDB\u6301\u4e45\u5316\u7684\u7ed3\u679c\nrdb_last_bgsave_time_sec:0 #\u4e0a\u6b21\u521b\u5efaRDB\u6587\u4ef6\u6d88\u8017\u7684\u79d2\u6570\nrdb_current_bgsave_time_sec:-1 #\u5982\u679c\u6b63\u5728\u521b\u5efaRDB\u6587\u4ef6\uff0c\u8bb0\u5f55\u5df2\u7ecf\u6d88\u8017\u4e86\u591a\u5c11\u65f6\u95f4\naof_enabled:1 #\u662f\u5426\u542f\u7528AOF\u6301\u4e45\u5316\naof_rewrite_in_progress:0 #\u662f\u5426\u6b63\u5728\u91cd\u5199AOF\u6587\u4ef6\naof_rewrite_scheduled:0 #\u662f\u5426\u5c06\u8981\u91cd\u5199AOF\u6587\u4ef6\naof_last_rewrite_time_sec:-1 #\u4e0a\u6b21AOF\u91cd\u5199\u6d88\u8017\u7684\u65f6\u95f4\naof_current_rewrite_time_sec:-1 #\u5f53\u524dAOF\u91cd\u5199\u5df2\u6d88\u8017\u7684\u65f6\u95f4\naof_last_bgrewrite_status:ok #\u4e0a\u6b21\u91cd\u5199AOF\u6587\u4ef6\u7684\u7ed3\u679c\naof_last_write_status:ok #\u4e0a\u6b21\u5199\u5165AOF\u6587\u4ef6\u7684\u7ed3\u679c\naof_current_size:54 #\u5f53\u524dAOF\u6587\u4ef6\u7684\u5927\u5c0f\naof_base_size:0 #\u4e0a\u4e00\u4e2aAOF\u6587\u4ef6\u7684\u5927\u5c0f\naof_pending_rewrite:0 #\u662f\u5426\u6709AOF\u91cd\u5199\u64cd\u4f5c\u5728\u7b49\u5f85RDB\u6587\u4ef6\u7684\u521b\u5efa\naof_buffer_length:0 #AOF\u5199\u5165\u7f13\u51b2\u533a\u5927\u5c0f\naof_rewrite_buffer_length:0 #AOF\u91cd\u5199\u7f13\u51b2\u533a\u5927\u5c0f\naof_pending_bio_fsync:0 #\u6b63\u5728I\/O\u961f\u5217\u4e2d\u7b49\u5f85\u7684fsync()\u7684\u6570\u91cf\naof_delayed_fsync:0 #\u88ab\u5ef6\u8fdf\u6267\u884c\u7684fsync()\u7684\u6570\u91cf\n \n# Stats\ntotal_connections_received:9 #\u670d\u52a1\u5668\u5df2\u63a5\u53d7\u7684\u8fde\u63a5\u8bf7\u6c42\u6570\ntotal_commands_processed:586729 #\u670d\u52a1\u5668\u5df2\u7ecf\u6267\u884c\u7684\u547d\u4ee4\u6570\u91cf\ninstantaneous_ops_per_sec:1 #\u5f53\u524d\u6bcf\u79d2\u6267\u884c\u7684\u547d\u4ee4\u6570\u91cf\ntotal_net_input_bytes:22855989 #\u63a5\u53d7\u7684\u6570\u636e\u5305\u603b\u5927\u5c0f\ntotal_net_output_bytes:849760 #\u53d1\u9001\u7684\u6570\u636e\u5305\u603b\u5927\u5c0f\ninstantaneous_input_kbps:0.05 #\u5f53\u524d\u4e0b\u884c\u901f\u7387\ninstantaneous_output_kbps:0.01 #\u5f53\u524d\u4e0a\u884c\u901f\u7387\nrejected_connections:0 #\u88ab\u62d2\u7edd\u7684\u8fde\u63a5\u8bf7\u6c42\u6570\nsync_full:1 #\u4e3b\u4ece\u540c\u6b65\u72b6\u6001\nsync_partial_ok:0\nsync_partial_err:0\nexpired_keys:0 #\u8fc7\u671f\u7684\u952e\u6570\nevicted_keys:0 #\u56e0\u5185\u5b58\u8fbe\u5230\u4e0a\u9650\u88ab\u5254\u9664\u7684\u952e\u6570\nkeyspace_hits:0 #\u547d\u4e2dkey\u7684\u6b21\u6570\nkeyspace_misses:0 #\u672a\u547d\u4e2d\u7684\u6b21\u6570\npubsub_channels:0 #\u5f53\u524d\u88ab\u8ba2\u9605\u7684\u9891\u9053\u548c\u6a21\u5f0f\u6570\npubsub_patterns:0\nlatest_fork_usec:640 #\u6700\u540e\u4e00\u6b21fork()\u6d88\u8017\u7684\u6beb\u79d2\u6570\nmigrate_cached_sockets:0 #\u4e3a\u8282\u70b9\u8fc1\u79fb\u7f13\u5b58\u7684TCP\u8fde\u63a5\u6570\n \n# Replication\nrole:master #\u4e3b\u8282\u70b9\u8fd8\u662f\u4ece\u8282\u70b9\nconnected_slaves:1 #\u5df2\u8fde\u63a5\u7684\u4ece\u8282\u70b9\u6570\nslave0:ip=127.0.0.1,port=7004,state=online,offset=821435,lag=1 #\u4ece\u8282\u70b9\u4fe1\u606f ip \u7aef\u53e3 \u6570\u636e\u65b0\u5ea6\u7b49\nmaster_repl_offset:821435 #\u4e3b\u8282\u70b9\u6570\u636e\u65b0\u5ea6\nrepl_backlog_active:1 #\u662f\u5426\u4e3a\u4e3b\u4ece\u540c\u6b65\u542f\u7528\u79ef\u538b\u7a7a\u95f4\nrepl_backlog_size:1048576 #\u79ef\u538b\u7a7a\u95f4\u5927\u5c0f\nrepl_backlog_first_byte_offset:2 #\u79ef\u538b\u7a7a\u95f4\u5f00\u5934\u7684\u6570\u636e\u65b0\u5ea6\nrepl_backlog_histlen:821434 #\u79ef\u538b\u7a7a\u95f4\u5f53\u524d\u6570\u636e\u91cf\n \n# CPU\nused_cpu_sys:255.39 #\u6838\u5fc3\u6001CPU\u65f6\u95f4\nused_cpu_user:257.42 #\u7528\u6237\u6001CPU\u65f6\u95f4\nused_cpu_sys_children:0.00 #\u5b50\u8fdb\u7a0b\u6838\u5fc3\u6001CPU\u65f6\u95f4\nused_cpu_user_children:0.00 #\u5b50\u8fdb\u7a0b\u7528\u6237\u6001CPU\u65f6\u95f4\n \n# Cluster\ncluster_enabled:1 #\u662f\u5426\u542f\u7528\u96c6\u7fa4\n \n# Keyspace\ndb0:keys=1,expires=0,avg_ttl=0 #\u5404\u6570\u636e\u5e93\u7684\u952e\u6570\u3001\u8fc7\u671f\u952e\u6570\u3001\u6570\u636e\u5e93\u4e2d\u952e\u7684\u5e73\u5747\u8fc7\u671f\u65f6\u95f4\u6233\u4f30\u6d4b\u503c<\/pre>\n<h3>\u51c6\u5907\u54e8\u5175\u914d\u7f6e\u6587\u4ef6(3\u4e2a\u8282\u70b9)<br \/><\/h3>\n<pre>\n# \u914d\u7f6e\u6587\u4ef6\uff1asentinel.conf\uff0c\u5728sentinel\u8fd0\u884c\u671f\u95f4\u662f\u4f1a\u88ab\u52a8\u6001\u4fee\u6539\u7684\n# sentinel\u5982\u679c\u91cd\u542f\u65f6\uff0c\u6839\u636e\u8fd9\u4e2a\u914d\u7f6e\u6765\u6062\u590d\u5176\u4e4b\u524d\u6240\u76d1\u63a7\u7684redis\u96c6\u7fa4\u7684\u72b6\u6001\n# \u7ed1\u5b9aIP\nbind 0.0.0.0\n \n# \u540e\u53f0\u8fd0\u884c\ndaemonize yes\n \n# \u9ed8\u8ba4yes\uff0c\u6ca1\u6307\u5b9a\u5bc6\u7801\u6216\u8005\u6307\u5b9aIP\u7684\u60c5\u51b5\u4e0b\uff0c\u5916\u7f51\u65e0\u6cd5\u8bbf\u95ee\nprotected-mode no\n \n# \u54e8\u5175\u7684\u7aef\u53e3\uff0c\u5ba2\u6237\u7aef\u901a\u8fc7\u8fd9\u4e2a\u7aef\u53e3\u6765\u53d1\u73b0redis\nport 26380\n \n# \u54e8\u5175\u81ea\u5df1\u7684IP\uff0c\u624b\u52a8\u8bbe\u5b9a\u4e5f\u53ef\u81ea\u52a8\u53d1\u73b0\uff0c\u7528\u4e8e\u4e0e\u5176\u4ed6\u54e8\u5175\u901a\u4fe1\n# sentinel announce-ip\n \n# \u4e34\u65f6\u6587\u4ef6\u5939\ndir \"\/tmp\"\n \n# \u65e5\u5fd7\nlogfile \"\/mnt\/redis\/logs\/sentinel-26380.log\"\n \n# sentinel\u76d1\u63a7\u7684master\u7684\u540d\u5b57\u53eb\u505amymaster,\u521d\u59cb\u5730\u5740\u4e3a 192.168.16.40 6380,2\u4ee3\u8868\u4e24\u4e2a\u53ca\u4ee5\u4e0a\u54e8\u5175\u8ba4\u5b9a\u4e3a\u6b7b\u4ea1\uff0c\u624d\u8ba4\u4e3a\u662f\u771f\u7684\u6b7b\u4ea1\nsentinel myid fa62676c970da6800e30b28b9cc732e2cee85952\n \n# \u53d1\u9001\u5fc3\u8df3PING\u6765\u786e\u8ba4master\u662f\u5426\u5b58\u6d3b\n# \u5982\u679cmaster\u5728\u201c\u4e00\u5b9a\u65f6\u95f4\u8303\u56f4\u201d\u5185\u4e0d\u56de\u5e94PONG \u6216\u8005\u662f\u56de\u590d\u4e86\u4e00\u4e2a\u9519\u8bef\u6d88\u606f\uff0c\u90a3\u4e48\u8fd9\u4e2asentinel\u4f1a\u4e3b\u89c2\u5730(\u5355\u65b9\u9762\u5730)\u8ba4\u4e3a\u8fd9\u4e2amaster\u5df2\u7ecf\u4e0d\u53ef\u7528\u4e86\nsentinel deny-scripts-reconfig yes\n \n# \u5982\u679c\u5728\u8be5\u65f6\u95f4\uff08ms\uff09\u5185\u672a\u80fd\u5b8c\u6210failover\u64cd\u4f5c\uff0c\u5219\u8ba4\u4e3a\u8be5failover\u5931\u8d25\nsentinel monitor mymaster 192.168.16.40 6381 2\n \n# \u6307\u5b9a\u4e86\u5728\u6267\u884c\u6545\u969c\u8f6c\u79fb\u65f6\uff0c\u6700\u591a\u53ef\u4ee5\u6709\u591a\u5c11\u4e2a\u4eceRedis\u5b9e\u4f8b\u5728\u540c\u6b65\u65b0\u7684\u4e3b\u5b9e\u4f8b\uff0c\u5728\u4eceRedis\u5b9e\u4f8b\u8f83\u591a\u7684\u60c5\u51b5\u4e0b\u8fd9\u4e2a\u6570\u5b57\u8d8a\u5c0f\uff0c\u540c\u6b65\u7684\u65f6\u95f4\u8d8a\u957f\uff0c\u5b8c\u6210\u6545\u969c\u8f6c\u79fb\u6240\u9700\u7684\u65f6\u95f4\u5c31\u8d8a\u957f\nsentinel down-after-milliseconds mymaster 1000\n<\/pre>\n<h3>\u589e\u52a0\u4e09\u4e2a\u914d\u7f6e\u6587\u4ef6<br \/><\/h3>\n<pre>\n[root@hadoop-master conf]# ll | grep sentinel\n-rw-r--r-- 1 root root 1989 7\u6708 28 18:09 sentinel-26380.conf\n-rw-r--r-- 1 root root 1989 7\u6708 28 18:09 sentinel-26381.conf\n-rw-r--r-- 1 root root 1989 7\u6708 28 18:09 sentinel-26382.conf\n<\/pre>\n<h3>\u542f\u52a8\u54e8\u5175\u8282\u70b9<br \/><\/h3>\n<pre>\n # \u53ef\u4f7f\u7528redis-server + sentinel\u53c2\u6570\u542f\u52a8\n \/mnt\/redis\/bin\/redis-server \/mnt\/redis\/conf\/sentinel-26380.conf --sentinel\n \n \/mnt\/redis\/bin\/redis-server \/mnt\/redis\/conf\/sentinel-26381.conf --sentinel\n \n \/mnt\/redis\/bin\/redis-server \/mnt\/redis\/conf\/sentinel-26382.conf --sentinel\n \n \n# \u76f4\u63a5\u4f7f\u7528redis-sentinel\u542f\u52a8\n \/mnt\/redis\/bin\/redis-sentinel \/mnt\/redis\/conf\/sentinel-26380.conf\n \n \/mnt\/redis\/bin\/redis-sentinel \/mnt\/redis\/conf\/sentinel-26381.conf\n \n \/mnt\/redis\/bin\/redis-sentinel \/mnt\/redis\/conf\/sentinel-26382.conf\n<\/pre>\n<p># \u505c\u6389master\uff0c\u4e3b\u4ece\u5207\u6362\u8fc7\u7a0b<\/p>\n<p>\u542f\u52a8\u54e8\u5175(\u5ba2\u6237\u7aef\u901a\u8fc7\u54e8\u5175\u53d1\u73b0Redis\u5b9e\u4f8b\u4fe1\u606f)<\/p>\n<p>\u54e8\u5175\u901a\u8fc7\u8fde\u63a5master\u53d1\u73b0\u4e3b\u4ece\u96c6\u7fa4\u5185\u7684\u6240\u6709\u5b9e\u4f8b\u4fe1\u606f<\/p>\n<p>\u54e8\u5175\u76d1\u63a7redis\u5b9e\u4f8b\u7684\u5065\u5eb7\u72b6\u51b5<\/p>\n<p>\u54e8\u5175\u4e00\u65e6\u53d1\u73b0master\u4e0d\u80fd\u6b63\u5e38\u63d0\u4f9b\u670d\u52a1\uff0c\u5219\u901a\u77e5\u7ed9\u5176\u4ed6\u54e8\u5175<\/p>\n<p>\u5f53\u4e00\u5b9a\u6570\u91cf\u7684\u54e8\u5175\u90fd\u8ba4\u4e3amaster\u6302\u4e86<\/p>\n<p>\u9009\u4e3e\u4e00\u4e2a\u54e8\u5175\u4f5c\u4e3a\u6545\u969c\u8f6c\u79fb\u7684\u6267\u884c\u8005<\/p>\n<p>\u6267\u884c\u8005\u5728slave\u4e2d\u9009\u53d6\u4e00\u4e2a\u4f5c\u4e3a\u65b0\u7684master<\/p>\n<p>\u5c06\u5176\u4ed6slave\u91cd\u65b0\u8bbe\u5b9a\u4e3a\u65b0master\u7684\u4ece\u5c5e&nbsp;<\/p>\n<pre>\n# \u56e0\u4e3a6380\u7684\u7aef\u53e3\u662f\u4e3b\u8282\u70b9\n[root@hadoop-master bin]# ps -ef | grep redis| grep 6380\nroot   30325   1 0 19:09 ?    00:00:00 \/mnt\/redis\/bin\/redis-server 0.0.0.0:6380\nroot   30415   1 0 19:10 ?    00:00:01 \/mnt\/redis\/bin\/redis-sentinel 0.0.0.0:26380 [sentinel]\n[root@hadoop-master bin]# kill -9 30325\n<\/pre>\n<p>\u4ece\u65e5\u5fd7\u4e2d\u5206\u6790\u54e8\u5175\u95f4\u7684\u901a\u4fe1\u53ca\u65b0mater\u7684\u751f\u6210&nbsp;<\/p>\n<pre>\n####################################\u542f\u52a8\u65e5\u5fd7#######################################\n31551:X 28 Jul 2020 19:35:23.289 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\n31551:X 28 Jul 2020 19:35:23.289 # Redis version=6.0.5, bits=64, commit=00000000, modified=0, pid=31551, just started\n31551:X 28 Jul 2020 19:35:23.289 # Configuration loaded\n31552:X 28 Jul 2020 19:35:23.293 * Running mode=sentinel, port=26380.\n31552:X 28 Jul 2020 19:35:23.293 # WARNING: The TCP backlog setting of 511 cannot be enforced because \/proc\/sys\/net\/core\/somaxconn is set to the lower value of 128.\n31552:X 28 Jul 2020 19:35:23.294 # Sentinel ID is fa62676c970da6800e30b28b9cc732e2cee85952\n31552:X 28 Jul 2020 19:35:23.294 # +monitor master mymaster 192.168.16.40 6380 quorum 2\n31552:X 28 Jul 2020 19:35:24.344 # +sdown sentinel 4cabf69629c1401289b6d3d239eba18b45da0041 192.168.16.40 26381 @ mymaster 192.168.16.40 6380\n31552:X 28 Jul 2020 19:35:24.345 # +sdown sentinel 20d8240e06a10cd887b752026c00de0318761eb8 192.168.16.40 26382 @ mymaster 192.168.16.40 6380\n31552:X 28 Jul 2020 19:35:26.471 # -sdown sentinel 4cabf69629c1401289b6d3d239eba18b45da0041 192.168.16.40 26381 @ mymaster 192.168.16.40 6380\n31552:X 28 Jul 2020 19:35:29.621 # -sdown sentinel 20d8240e06a10cd887b752026c00de0318761eb8 192.168.16.40 26382 @ mymaster 192.168.16.40 6380\n####################################\u6740\u6389\u4e3b\u8282\u70b9\u4e4b\u540e\u65e5\u5fd71###################################\n \n31552:X 28 Jul 2020 19:37:42.950 # +sdown master mymaster 192.168.16.40 6380\n31552:X 28 Jul 2020 19:37:43.018 # +new-epoch 3\n31552:X 28 Jul 2020 19:37:43.019 # +vote-for-leader 4cabf69629c1401289b6d3d239eba18b45da0041 3\n31552:X 28 Jul 2020 19:37:44.023 # +odown master mymaster 192.168.16.40 6380 #quorum 3\/2\n31552:X 28 Jul 2020 19:37:44.023 # Next failover delay: I will not start a failover before Tue Jul 28 19:37:49 2020\n31552:X 28 Jul 2020 19:37:44.098 # +config-update-from sentinel 4cabf69629c1401289b6d3d239eba18b45da0041 192.168.16.40 26381 @ mymaster 192.168.16.40 6380\n31552:X 28 Jul 2020 19:37:44.098 # +switch-master mymaster 192.168.16.40 6380 192.168.16.40 6381\n31552:X 28 Jul 2020 19:37:44.098 * +slave slave 192.168.16.40:6382 192.168.16.40 6382 @ mymaster 192.168.16.40 6381\n31552:X 28 Jul 2020 19:37:44.098 * +slave slave 192.168.16.40:6380 192.168.16.40 6380 @ mymaster 192.168.16.40 6381\n31552:X 28 Jul 2020 19:37:45.169 # +sdown slave 192.168.16.40:6380 192.168.16.40 6380 @ mymaster 192.168.16.40 6381\n \n####################################\u6740\u6389\u4e3b\u8282\u70b9\u4e4b\u540e\u65e5\u5fd72###################################\n31557:X 28 Jul 2020 19:37:42.952 # +sdown master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:43.014 # +odown master mymaster 192.168.16.40 6380 #quorum 2\/2\n31557:X 28 Jul 2020 19:37:43.014 # +new-epoch 3\n31557:X 28 Jul 2020 19:37:43.014 # +try-failover master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:43.016 # +vote-for-leader 4cabf69629c1401289b6d3d239eba18b45da0041 3\n31557:X 28 Jul 2020 19:37:43.019 # fa62676c970da6800e30b28b9cc732e2cee85952 voted for 4cabf69629c1401289b6d3d239eba18b45da0041 3\n31557:X 28 Jul 2020 19:37:43.019 # 20d8240e06a10cd887b752026c00de0318761eb8 voted for 4cabf69629c1401289b6d3d239eba18b45da0041 3\n31557:X 28 Jul 2020 19:37:43.087 # +elected-leader master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:43.087 # +failover-state-select-slave master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:43.140 # +selected-slave slave 192.168.16.40:6381 192.168.16.40 6381 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:43.140 * +failover-state-send-slaveof-noone slave 192.168.16.40:6381 192.168.16.40 6381 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:43.216 * +failover-state-wait-promotion slave 192.168.16.40:6381 192.168.16.40 6381 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:44.023 # +promoted-slave slave 192.168.16.40:6381 192.168.16.40 6381 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:44.023 # +failover-state-reconf-slaves master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:44.097 * +slave-reconf-sent slave 192.168.16.40:6382 192.168.16.40 6382 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:45.095 * +slave-reconf-inprog slave 192.168.16.40:6382 192.168.16.40 6382 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:45.095 * +slave-reconf-done slave 192.168.16.40:6382 192.168.16.40 6382 @ mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:45.172 # -odown master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:45.172 # +failover-end master mymaster 192.168.16.40 6380\n31557:X 28 Jul 2020 19:37:45.172 # +switch-master mymaster 192.168.16.40 6380 192.168.16.40 6381\n31557:X 28 Jul 2020 19:37:45.172 * +slave slave 192.168.16.40:6382 192.168.16.40 6382 @ mymaster 192.168.16.40 6381\n31557:X 28 Jul 2020 19:37:45.172 * +slave slave 192.168.16.40:6380 192.168.16.40 6380 @ mymaster 192.168.16.40 6381\n31557:X 28 Jul 2020 19:37:46.226 # +sdown slave 192.168.16.40:6380 192.168.16.40 6380 @ mymaster 192.168.16.40 6381\n \n####################################\u6740\u6389\u4e3b\u8282\u70b9\u4e4b\u540e\u65e5\u5fd73###################################\n31563:X 28 Jul 2020 19:37:42.970 # +sdown master mymaster 192.168.16.40 6380\n31563:X 28 Jul 2020 19:37:43.018 # +new-epoch 3\n31563:X 28 Jul 2020 19:37:43.019 # +vote-for-leader 4cabf69629c1401289b6d3d239eba18b45da0041 3\n31563:X 28 Jul 2020 19:37:43.023 # +odown master mymaster 192.168.16.40 6380 #quorum 3\/2\n31563:X 28 Jul 2020 19:37:43.023 # Next failover delay: I will not start a failover before Tue Jul 28 19:37:49 2020\n31563:X 28 Jul 2020 19:37:44.098 # +config-update-from sentinel 4cabf69629c1401289b6d3d239eba18b45da0041 192.168.16.40 26381 @ mymaster 192.168.16.40 6380\n31563:X 28 Jul 2020 19:37:44.098 # +switch-master mymaster 192.168.16.40 6380 192.168.16.40 6381\n31563:X 28 Jul 2020 19:37:44.098 * +slave slave 192.168.16.40:6382 192.168.16.40 6382 @ mymaster 192.168.16.40 6381\n31563:X 28 Jul 2020 19:37:44.098 * +slave slave 192.168.16.40:6380 192.168.16.40 6380 @ mymaster 192.168.16.40 6381\n31563:X 28 Jul 2020 19:37:45.124 # +sdown slave 192.168.16.40:6380 192.168.16.40 6380 @ mymaster 192.168.16.40 6381\n<\/pre>\n<p>\u54e8\u5175\u540c\u6b65pubsub\u673a\u5236\u53d1\u51fa\u6765\u7684\u6d88\u606f<\/p>\n<pre>\n# https:\/\/redis.io\/topics\/sentinel#pubsub-messages\n \n+reset-master \n   \n     -- \u5f53master\u88ab\u91cd\u7f6e\u65f6.\n \n+slave \n    \n      -- \u5f53\u68c0\u6d4b\u5230\u4e00\u4e2aslave\u5e76\u6dfb\u52a0\u8fdbslave\u5217\u8868\u65f6. +failover-state-reconf-slaves \n     \n       -- Failover\u72b6\u6001\u53d8\u4e3areconf-slaves\u72b6\u6001\u65f6 +failover-detected \n      \n        -- \u5f53failover\u53d1\u751f\u65f6 +slave-reconf-sent \n       \n         -- sentinel\u53d1\u9001SLAVEOF\u547d\u4ee4\u628a\u5b83\u91cd\u65b0\u914d\u7f6e\u65f6 +slave-reconf-inprog \n        \n          -- slave\u88ab\u91cd\u65b0\u914d\u7f6e\u4e3a\u53e6\u5916\u4e00\u4e2amaster\u7684slave\uff0c\u4f46\u6570\u636e\u590d\u5236\u8fd8\u672a\u53d1\u751f\u65f6\u3002 +slave-reconf-done \n         \n           -- slave\u88ab\u91cd\u65b0\u914d\u7f6e\u4e3a\u53e6\u5916\u4e00\u4e2amaster\u7684slave\u5e76\u4e14\u6570\u636e\u590d\u5236\u5df2\u7ecf\u4e0emaster\u540c\u6b65\u65f6\u3002 -dup-sentinel \n          \n            -- \u5220\u9664\u6307\u5b9amaster\u4e0a\u7684\u5197\u4f59sentinel\u65f6 (\u5f53\u4e00\u4e2asentinel\u91cd\u65b0\u542f\u52a8\u65f6\uff0c\u53ef\u80fd\u4f1a\u53d1\u751f\u8fd9\u4e2a\u4e8b\u4ef6). +sentinel \n           \n             -- \u5f53master\u589e\u52a0\u4e86\u4e00\u4e2asentinel\u65f6\u3002 +sdown \n            \n              -- \u8fdb\u5165SDOWN\u72b6\u6001\u65f6; -sdown \n             \n               -- \u79bb\u5f00SDOWN\u72b6\u6001\u65f6\u3002 +odown \n              \n                -- \u8fdb\u5165ODOWN\u72b6\u6001\u65f6\u3002 -odown \n               \n                 -- \u79bb\u5f00ODOWN\u72b6\u6001\u65f6\u3002 +new-epoch \n                \n                  -- \u5f53\u524d\u914d\u7f6e\u7248\u672c\u88ab\u66f4\u65b0\u65f6\u3002 +try-failover \n                 \n                   -- \u8fbe\u5230failover\u6761\u4ef6\uff0c\u6b63\u7b49\u5f85\u5176\u4ed6sentinel\u7684\u9009\u4e3e\u3002 +elected-leader \n                  \n                    -- \u88ab\u9009\u4e3e\u4e3a\u53bb\u6267\u884cfailover\u7684\u65f6\u5019\u3002 +failover-state-select-slave \n                   \n                     -- \u5f00\u59cb\u8981\u9009\u62e9\u4e00\u4e2aslave\u5f53\u9009\u65b0master\u65f6\u3002 +no-good-slave \n                    \n                      -- \u6ca1\u6709\u5408\u9002\u7684slave\u6765\u62c5\u5f53\u65b0master +selected-slave \n                     \n                       -- \u627e\u5230\u4e86\u4e00\u4e2a\u9002\u5408\u7684slave\u6765\u62c5\u5f53\u65b0master +promoted-slave -- \u786e\u8ba4\u6210\u529f +failover-state-reconf-slaves -- \u5f00\u59cb\u5bf9slaves\u8fdb\u884creconfig\u64cd\u4f5c +slave-reconf-sent -- \u5411\u6307\u5b9a\u7684slave\u53d1\u9001\u201cslaveof\u201d\u6307\u4ee4\uff0c\u544a\u77e5\u6b64slave\u8ddf\u968f\u65b0\u7684master +slave-reconf-inprog -- \u6b64slave\u6b63\u5728\u6267\u884cslaveof + SYNC\u8fc7\u7a0b\uff0cslave\u6536\u5230\u201c+slave-reconf-sent\u201d\u4e4b\u540e\u5c06\u4f1a\u6267\u884cslaveof\u64cd\u4f5c +slave-reconf-done -- \u6b64slave\u540c\u6b65\u5b8c\u6210\uff0c\u6b64\u540eleader\u53ef\u4ee5\u7ee7\u7eed\u4e0b\u4e00\u4e2aslave\u7684reconfig\u64cd\u4f5c failover-state-send-slaveof-noone \n                      \n                        -- \u5f53\u628a\u9009\u62e9\u4e3a\u65b0master\u7684slave\u7684\u8eab\u4efd\u8fdb\u884c\u5207\u6362\u7684\u65f6\u5019\u3002 failover-end-for-timeout \n                       \n                         -- failover\u7531\u4e8e\u8d85\u65f6\u800c\u5931\u8d25\u65f6\u3002 failover-end \n                        \n                          -- failover\u6210\u529f\u5b8c\u6210,\u6545\u969c\u8f6c\u79fb\u7ed3\u675f switch-master \n                         \n                          \n                           \n                            \n                             \n                               -- \u5f53master\u7684\u5730\u5740\u53d1\u751f\u53d8\u5316\u65f6\u3002\u901a\u5e38\u8fd9\u662f\u5ba2\u6237\u7aef\u6700\u611f\u5174\u8da3\u7684\u6d88\u606f\u4e86\u3002 +tilt -- \u8fdb\u5165Tilt\u6a21\u5f0f\u3002 \n                             \n                            \n                           \n                          \n                         \n                        \n                       \n                      \n                     \n                    \n                   \n                  \n                 \n                \n               \n              \n             \n            \n           \n          \n         \n        \n       \n      \n     \n    \n   <\/pre>\n<p>\u81f3\u6b64\uff0cRedis\u54e8\u5175\u6a21\u5f0f\u57fa\u672c\u4e0a\u53ef\u4ee5\u5065\u58ee\u8fd0\u884c\u4e86\u3002<\/p>\n<h3>Java\u4f7f\u7528\u54e8\u5175\u6a21\u5f0f<br \/><\/h3>\n<pre>\n@Configuration\npublicclass SentinelRedisAppConfig {\n  @Bean\n  public LettuceConnectionFactory redisConnectionFactory() {\n    System.out.println(\"\u4f7f\u7528\u54e8\u5175\u7248\u672c\");\n    RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()\n        .master(\"mymaster\")\n        \/\/ \u54e8\u5175\u5730\u5740\n        .sentinel(\"192.168.16.40\", 26380)\n        .sentinel(\"192.168.16.40\", 26381)\n        .sentinel(\"192.168.16.40\", 26381);\n    return new LettuceConnectionFactory(sentinelConfig);\n  }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Redis \u54e8\u5175\u9ad8\u6a21\u5f0f\u642d\u5efa\u53caJa&#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-201318","post","type-post","status-publish","format-standard","hentry","category-database"],"_links":{"self":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/201318","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=201318"}],"version-history":[{"count":0,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/201318\/revisions"}],"wp:attachment":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/media?parent=201318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/categories?post=201318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/tags?post=201318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}