国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

SpringBoot結合Redis哨兵模式的實現示例

瀏覽:91日期:2023-05-22 08:57:49

Redis哨兵模式

Redis Sentinel介紹

Redis Sentinel是Redis高可用的實現方案。Sentinel是一個管理多個Redis實例的工具,它可以實現對Redis的監控、通知、自動故障轉移。

Redis Sentinel主要功能

Redis 的 Sentinel 系統用于管理多個 Redis 服務器(instance), 該系統執行以下三個任務:

監控(Monitoring):Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。 提醒(Notification):當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。 自動故障遷移(Automatic failover):當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主服務器的其中一個從服務器升級為新的主服務器, 并讓失效主服務器的其他從服務器改為復制新的主服務器; 當客戶端試圖連接失效的主服務器時, 集群也會向客戶端返回新主服務器的地址, 使得集群可以使用新主服務器代替失效服務器。

Redis Sentinel部署

SpringBoot結合Redis哨兵模式的實現示例 SpringBoot結合Redis哨兵模式的實現示例

Redis集群配置

Redis集群啟動

復制3個reids.conf配置文件

cp redis.conf /home/redis/redis6379.confcp redis.conf /home/redis/redis6380.confcp redis.conf /home/redis/redis6381.conf

修改reids.conf配置文件,以6379配置為例

vim redis6379.conf#啟用后臺啟動daemonize yes#pidfile位置pidfile '/home/redis/6379/redis6379.pid'#端口port 6379#日志文件位置logfile '/home/redis/6379/log6379.log'#rdb備份文件名稱dbfilename 'dump6379.rdb'#rdb備份文件路徑dir '/home/redis/rdb/'

修改redis-slave配置文件,修改和master如上配置,6380、6381配置文件,新增如下

slaveof 192.168.126.200 6379

先啟動master服務,在啟動slave服務

master節點服務./redis-cli -p 6379127.0.0.1:6379> info replication# Replicationrole:masterconnected_slaves:2slave0:ip=192.168.126.200,port=6380,state=online,offset=975350,lag=1slave1:ip=192.168.126.200,port=6381,state=online,offset=975350,lag=1master_repl_offset:975495repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:975494slave節點服務./redis-cli -p 6380# Replicationrole:slavemaster_host:192.168.126.200master_port:6379master_link_status:upmaster_last_io_seconds_ago:0master_sync_in_progress:0slave_repl_offset:989499slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0

sentinel集群配置

編寫sentinel配置文件,master配置

touch sentinel1.confvim sentinel1.conf#Sentinel節點的端口port 26379dir '/home/redis/sentinel'daemonize yeslogfile 'sentinel-26379.log'#當前Sentinel節點監控 127.0.0.1:6379 這個主節點#代表判斷主節點失敗至少需要2個Sentinel節點節點同意#mymaster是主節點的別名sentinel monitor mymaster 192.168.126.200 6380 2#每個Sentinel節點都要定期PING命令來判斷Redis數據節點和其余Sentinel節點是否可達,如果超過30000毫秒且沒有回復,則判定不可達sentinel down-after-milliseconds mymaster 30000#當Sentinel節點集合對主節點故障判定達成一致時,Sentinel領導者節點會做故障轉移操作,選出新的主節點,原來的從節點會向新的主節點發起復制操作,限制每次向>新的主節點發起復制操作的從節點個數為1sentinel leader-epoch mymaster 1#故障轉移超時時間為180000毫秒sentinel failover-timeout mymaster 180000#同理創建修改sentinel2.conf、sentinel3.conf配置文件

啟動3臺sentinel服務

./redis-sentinel /home/redis/sentinel1.conf./redis-sentinel /home/redis/sentinel2.conf./redis-sentinel /home/redis/sentinel3.conf

SpringBoot結合Redis哨兵模式

創建SpringBoot項目,添加依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId></dependency><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency><!--redis連接池--><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency>

核心配置文件application.yml

server: port: 80spring: redis: lettuce: pool: # 連接池最大連接數(使用負值表示沒有限制) 默認為8 max-active: 8 # 連接池中的最大空閑連接 默認為8 max-idle: 8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) 默認為-1 max-wait: -1ms # 連接池中的最小空閑連接 默認為 0 min-idle: 0 sentinel: # 主節點的別名 master: mymaster # sentinel服務的ip和端口 nodes: 192.168.126.200:26379,192.168.126.200:26380,192.168.126.200:26381

程序調用

@RestController@RequestMapping('/redis')public class RedisController { // 使用SpringBoot封裝的RestTemplate對象 @Autowired RedisTemplate<String, String> redisTemplate; @RequestMapping('/get') public String get(String key) { String value = redisTemplate.opsForValue().get(key); return value; } @RequestMapping('/set') public String set(String key, String value) { redisTemplate.opsForValue().set(key, value); return 'success'; }}

模擬故障

手動shutdown redis的master服務后,后臺會嘗試重連,當超過最大等待時間,無法連接后,sentinel會重新選舉出一個新的master,程序獲取到新的master節點,提供讀寫服務

SpringBoot結合Redis哨兵模式的實現示例

到此這篇關于SpringBoot結合Redis哨兵模式的實現示例的文章就介紹到這了,更多相關SpringBoot結合Redis哨兵模式內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 精品在线看 | 殴美一级视频 | 爽爽窝窝午夜精品一区二区 | 国产一二三区在线观看 | 亚洲国产综合精品 | 九九午夜 | 久久久国产免费影院 | 亚洲系列中文字幕一区二区 | 人成精品视频三区二区一区 | 久久久久久久久久久视频国内精品视频 | 三级黄色片在线免费观看 | 国产精品黄在线观看免费软件 | 韩国一级永久免费观看网址 | 亚洲欧美视频二区 | 欧美亚洲国产一区 | 92看片淫黄大片看国产片 | 成人免费视频网址 | 国产精品一区在线免费观看 | 5级做人爱c视版免费视频 | 欧美视频精品在线 | 国产在线精品一区二区三区 | 中文字幕在线网址 | 免费观看欧美一区二区三区 | 福利姬在线精品观看 | 欧美亚洲日本视频 | 免费在线视频成人 | 一本色道久久爱 | 久久中精品中文 | 欧美一级人与动毛片免费播放 | 在线日本视频 | wwwxxx欧美| 中文字幕一区二区在线观看 | 亚洲成人天堂 | 在线观看免费视频网站色 | 欧美特黄一级aa毛片 | 成人免费毛片一区二区三区 | 欧美成在线视频 | 久久99国产亚洲精品 | 成人看片黄a在线看 | 久久亚洲精品中文字幕二区 | 亚洲综合色吧 |