Redis配置主从有多难?
背景
凡是都是有背景,事出必有因。是工作需配置 Redis主从结构。那么就开始了新的探索。传统项目都是单机部署,所有依赖的中间件都是单节点。因为业务量不大,导致了没有机会用到Redis主从又或是职责划分比较清晰。您不需要关注部署的事儿。
使用docker快速搭建Redis主从
为啥不直接配置?redis配置项可多了,没有docker来的快速。这里我使用的docker-compose容器编排工具。
直接上docker-compose.yml配置文件
version: '2'
services:
redis-master:
image: 'bitnami/redis:latest'
restart: always
ports:
- '6379:6379'
environment:
- REDIS_REPLICATION_MODE=master
- REDIS_PASSWORD=masterPass123.
volumes:
- '/opt/data/bitnami-redis/data:/bitnami/redis/data'
redis-replica:
image: 'bitnami/redis:latest'
restart: always
ports:
- '6380:6379'
depends_on:
- redis-master
environment:
- REDIS_REPLICATION_MODE=slave
- REDIS_MASTER_HOST=redis-master
- REDIS_MASTER_PORT_NUMBER=6379
- REDIS_MASTER_PASSWORD=masterPass123.
- REDIS_PASSWORD=my_replica_password
reids 主从的端口配置
节点 | 端口 |
---|---|
redis master | 6379 |
redis slave | 6380 |
然后启动
docker-compose up
能看到下面这个日志图形,基本就是启动成功了
redis-replica_1 | _._
redis-replica_1 | _.-``__ ''-._
redis-replica_1 | _.-`` `. `_. ''-._ Redis 4.0.7 (00000000/0) 64 bit
redis-replica_1 | .-`` .-```. ```\/ _.,_ ''-._
redis-replica_1 | ( ' , .-` | `, ) Running in standalone mode
redis-replica_1 | |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
redis-replica_1 | | `-._ `._ / _.-' | PID: 20
redis-replica_1 | `-._ `-._ `-./ _.-' _.-'
redis-replica_1 | |`-._`-._ `-.__.-' _.-'_.-'|
redis-replica_1 | | `-._`-._ _.-'_.-' | http://redis.io
redis-replica_1 | `-._ `-._`-.__.-'_.-' _.-'
redis-replica_1 | |`-._`-._ `-.__.-' _.-'_.-'|
redis-replica_1 | | `-._`-._ _.-'_.-' |
redis-replica_1 | `-._ `-._`-.__.-'_.-' _.-'
redis-replica_1 | `-._ `-.__.-' _.-'
redis-replica_1 | `-._ _.-'
redis-replica_1 | `-.__.-'
通过RedisDesktopManager测试
链接信息表
节点 | 链接 | 密码 |
---|---|---|
redis master | 192.168.1.9:6379 | masterPass123. |
redis slave | 192.168.1.9:6380 | my_replica_password |
- 1、在主节点上写入一个key,然后从节点自动同步到从节点了。
- 2、在从节点写入key,发现没保存成功。因为从节点是只读的。
- 3、删除主主节点的key,从节点也自动同步了。
- 4、关闭从节点,主节点可正常写入。启动从节点后,数据又自动同步过去了。
Redis主从的同步原理
Redis有两种同步方式:
– 增量同步
– 在Slave正常工作时
– 全量同步
– 在Slave初始化节点执行
更多参考:https://www.sohu.com/a/282320434_100212268
客户端做个读写分离
待更新了