• Redis使用--主从复制


    主从复制

    像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构。

    主从好处

    主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。

    redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低redis的处理性能。主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能。

    在主从架构中,从服务器通常被设置为只读模式,这样可以避免从服务器的数据被误修改。但是从服务器仍然可以接受CONFIG等指令,所以还是不应该将从服务器直接暴露到不安全的网络环境中。如果必须如此,那可以考虑给重要指令进行重命名,来避免命令被外人误执行。

    主从– 同步原理

    从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存在内存中。在BGSAVE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完成后,主服务器会将这段时间缓存的写指令再以redis协议的格式发送给从服务器。

    另外,要说的一点是,即使有多个从服务器同时发来SYNC指令,主服务器也只会执行一次BGSAVE,然后把持久化好的RDB文件发给多个下游。在redis2.8版本之前,如果从服务器与主服务器因某些原因断开连接的话,都会进行一次主从之间的全量的数据同步;而在2.8版本之后,redis支持了效率更高的增量同步策略,这大大降低了连接断开的恢复成本。

    主服务器会在内存中维护一个缓冲区,缓冲区中存储着将要发给从服务器的内容。从服务器在与主服务器出现网络瞬断之后,从服务器会尝试再次与主服务器连接,一旦连接成功,从服务器就会把“希望同步的主服务器ID”和“希望请求的数据的偏移位置(replication offset)”发送出去。主服务器接收到这样的同步请求后,首先会验证主服务器ID是否和自己的ID匹配,其次会检查“请求的偏移位置”是否存在于自己的缓冲区中,如果两者都满足的话,主服务器就会向从服务器发送增量内容。

    增量同步功能,需要服务器端支持全新的PSYNC指令。这个指令,只有在redis-2.8之后才具有。

    Windows下配置主从

    1. 解压多分Redis

    一个是主服务,两个从服务。

    2. 修改从服务的配置文件

    将这两个文件中的端口 port 更改为与主redis(6379)不相同既可,例: 6380、6381。然后再更改主从配置的参数:# slaveof <masterip> <masterport>  ,改为:slaveof 127.0.0.1 6379  表示是该主服务的从服务

    3. 安装启动服务

    主服务器:

    F:Redis-6379>  redis-server --service-install redis.windows.conf --loglevel verbose  --service-name  redis6379  (这里是windows服务里显示的名称)
    
    F:Redis-6379>  redis-server.exe redis.windows.conf

    从服务器1:

    F:Redis-6380> redis-server --service-install redis.windows.conf --loglevel verbose  --service-name  redis6380
    
    F:Redis-6380>  redis-server.exe redis.windows.conf

    从服务器2:

    F:Redis-6381>  redis-server --service-install redis.windows.conf --loglevel verbose  --service-name  redis6381
    
    F:Redis-6381>  redis-server.exe redis.windows.conf

    4. 验证从服务器

    然后在主服务里面创建key,在从服务里可以取到主服务里设置的key

    5. 从服务器只读

    默认情况下redis数据库充当slave角色时是只读的不能进行写操作 可以在配置文件中开启非只读:slave-read-only no

    CentOS 7下配置主从

    1. 在安装好单机版的前提下,复制三份配置文件

    进入redis所在目录
    [root@zhaoyl redis-6.0.6]# cd RedisSoft/redis-6.0.6
    
    创建6379、6380、6382目录,分别将安装目录下的redis.conf拷贝到这三个目录下。
    [root@zhaoyl redis-6.0.6]# 6379 && cp redis.conf 6379/6379.conf
    [root@zhaoyl redis-6.0.6]# 6381 && cp redis.conf 6380/6380.conf
    [root@zhaoyl redis-6.0.6]# 6382 && cp redis.conf 6382/6382.conf

    2. 分别修改配置文件

    [root@zhaoyl redis-6.0.6]# vim 6379/6379.conf
    修改内容:
    # Redis使用后台模式
    daemonize yes
    
    # 关闭保护模式
    protected-mode no
    
    # 注释以下内容开启远程访问
    # bind 127.0.0.1
    
    # 修改启动端口为6379
    port 6379
    
    # 修改pidfile指向路径
    pidfile 6379/redis_6379.pid

    以此类推,修改端口6380及6382配置。修改配置文件时,按空格+/+要找的词可以快速定位,找到后按i键进入insert状态进行修改,修改完成后按Esc键,然后接着按:w进行保存

    3. 主从结构设置

    在Redis中设置主从有2种方式:
    1. 在redis.conf中设置slaveof
        a)  slaveof <masterip> <masterport>
    
    2. 使用redis-cli客户端连接到redis服务,执行slaveof命令
        a)  slaveof <masterip> <masterport>

    第二种方式在重启后将失去主从复制关系。 我们这里使用第二种方式设置主从: 使用Redis客户端连接上6380端口,设置6380端口Redis为6379的从

    使用Redis客户端连接上6382端口,设置6382端口Redis为6379的从

    4. 查看Redis主从关系

    使用Redis客户端连接上6379端口,查看Redis主从关系 如下图所示

    role:角色信息 
    slaveX:从库信息 
    connected_slaves:从库数量

    5. 测试主从数据

        

    6. 主从从结构设置

    Redis的主从架构的缺点是所有的slave节点数据的复制和同步都由master节点来处理,会照成master节点压力太大,所以我们使用主从从结构来处理

    1. 前面步骤同主从架构一致,只是在设置主从结构时,设置6380为6379的从,6382为6380的从

    使用Redis客户端连接上6380端口,设置6380端口Redis为6379的从

    使用Redis客户端连接上6382端口,设置6382端口Redis为6380的从

    2. 查看主从从架构信息: 

    3. 测试

     

     

     

  • 相关阅读:
    angularjs的$on、$emit、$broadcast
    angularjs中的路由介绍详解 ui-route(转)
    ionic入门教程-ionic路由详解(state、route、resolve)(转)
    Cocos Creator 加载使用protobuf第三方库,因为加载顺序报错
    Cocos Creator 计时器错误 cc.Scheduler: Illegal target which doesn't have uuid or instanceId.
    Cocos Creator 构造函数传参警告 Can not instantiate CCClass 'Test' with arguments.
    Cocos Creator 对象池NodePool
    Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)
    Cocos Creator 常驻节点addPersistRootNode
    Cocos Creator 配合Tiled地图的使用
  • 原文地址:https://www.cnblogs.com/zhaoyl9/p/13489788.html
Copyright © 2020-2023  润新知