前言
各類的讀寫分離已經是常態了,
而且在容器化的幫助下,要模擬各種情形實在不是什麼太大的負擔,
在這簡單記錄一下Redis Master Slave的設定加上Spring Boot
透過下列幾個步驟設定後就可以試用
- Master
- Slave
- Tool
- Spring Boot
相關程式放在 Github 中
Master
redis-master:
container_name: redis-master
image: redis:5-alpine
ports:
- 6379:6379
volumes:
- ./data/redis-master:/data
測試時使用alpine的版本,並注意port的對應。
Slave
redis-slave:
container_name: redis-slave
image: redis:5-alpine
command: redis-server --slaveof redis-master 6379
ports:
- 6380:6379
volumes:
- ./data/redis-slave:/data
links:
- redis-master
要注意的是command redis-server --slaveof redis-master 6379
指定slaveof
,,並注意port的對應即可。
Tool
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: rediscommander/redis-commander:latest
environment:
- REDIS_HOSTS=master:redis-master,slave-1:redis-slave
ports:
- 8081:8081
提供一個簡單的介面,方便觀察多個redis的改變。
設定好REDIS_HOSTS
即可
就能看到類似下列畫面
透過refresh就能同時看到master, slaves key值的增減
Spring Boot
感謝Spring,要做的事少了很多
pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
只要加入starter-data-redis
即可
application.yml
redis:
mater:
host: localhost
port: 6379
slaves:
- host: localhost
port: 6380
master只有一台
slaves可以設定多台
Demo
透過urlhttp://localhost:8080/service/demo 就能加入demo用的值,
可以觀察到Master及Slave都會有值的變化

