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

客户端做个读写分离

待更新了

来源: 雨林博客(www.yl-blog.com)