>  기사  >  백엔드 개발  >  Redis 튜토리얼(9): 마스터-슬레이브 복제 구성 예

Redis 튜토리얼(9): 마스터-슬레이브 복제 구성 예

黄舟
黄舟원래의
2016-12-28 15:02:05987검색

1. Redis 복제:

여기서 먼저 설명해야 할 것은 Redis에서 마스터-슬레이브 모드를 구성하는 것이 정말 간단하다는 것입니다. 이 블로그를 읽고 나면 쉽게 할 수 있을 거라 믿습니다. 여기서는 먼저 몇 가지 이론적 지식을 나열한 다음 실제 사례를 설명하겠습니다.

다음 목록은 Redis 복제의 기능과 장점을 명확하게 설명합니다.

1) 동일한 마스터가 여러 슬레이브를 동기화할 수 있습니다.
2) 슬레이브는 다른 슬레이브의 연결 및 동기화 요청을 수락할 수도 있으므로 마스터의 동기화 부담을 효과적으로 줄일 수 있습니다. 따라서 Redis의 복제 아키텍처를 그래프 구조로 생각할 수 있습니다.
3) 마스터 서버는 슬레이브에게 Non-Blocking 방식으로 서비스를 제공합니다. 따라서 마스터-슬레이브 동기화 중에 클라이언트는 여전히 쿼리나 수정 요청을 제출할 수 있습니다.
4) 슬레이브 서버도 Non-Blocking 방식으로 데이터 동기화를 완료합니다. 동기화 중에 클라이언트가 쿼리 요청을 제출하면 Redis는 동기화 전에 데이터를 반환합니다.
5) 마스터의 읽기 작업 부담을 덜어주기 위해 슬레이브 서버는 클라이언트에 읽기 전용 작업 서비스를 제공할 수 있으며, 쓰기 서비스는 여전히 마스터에 의해 완료되어야 합니다. 그럼에도 불구하고 시스템의 확장성은 크게 향상되었습니다.
6) 마스터는 데이터 저장 작업을 슬레이브에 넘길 수 있으므로 이 작업을 완료하기 위해 마스터에서 독립적인 프로세스가 필요하지 않습니다.

2. 복제 작동 방식:

슬레이브가 시작되어 마스터에 연결되면 적극적으로 SYNC 명령을 보냅니다. 그 후, 마스터는 백그라운드 저장 프로세스를 시작하고 데이터 세트 수정을 위해 수신된 모든 명령을 수집합니다. 백그라운드 프로세스가 완료된 후 마스터는 전체 데이터베이스 파일을 슬레이브로 전송하여 완전한 동기화를 완료합니다. 슬레이브 서버는 데이터베이스 파일 데이터를 수신한 후 이를 저장하고 메모리에 로드합니다. 그 후, 마스터는 수집된 모든 수정 명령과 새로운 수정 명령을 순차적으로 슬레이브에 전송합니다. 이번에는 슬레이브가 이러한 데이터 수정 명령을 실행하여 최종 데이터 동기화를 달성합니다.
Master와 Slave 사이의 연결이 끊어지면 Slave는 자동으로 Master에 다시 연결할 수 있지만, 연결이 성공한 후에는 자동으로 전체 동기화가 수행됩니다.

3. 복제 구성 방법:

다음 단계를 참조하세요.
1) 두 개의 Redis 서버를 동시에 시작하는 것을 고려할 수 있습니다. 6379 및 6380과 같은 다른 포트를 별도로 모니터링합니다.
2) 슬레이브 서버에서 명령을 실행합니다:

  /> redis-cli -p 6380   #这里我们假设Slave的端口号是6380
    redis 127.0.0.1:6380> slaveof 127.0.0.1 6379 #我们假设Master和Slave在同一台主机,Master的端口为6379
    OK

위 방법은 서비스(redis_6380)가 다시 시작되면 redis_6380이 redis_6379의 슬레이브가 되는 것을 보장합니다. , 이들 간의 복제 관계가 종료됩니다.
두 서버 간의 복제 관계를 오랫동안 유지하려면 redis_6380의 구성 파일에서 다음과 같이 수정하면 됩니다.

    /> cd /etc/redis  #切换Redis服务器配置文件所在的目录。
    /> ls
    6379.conf  6380.conf
    /> vi 6380.conf
    将
    # slaveof <masterip> <masterport>
    改为
    slaveof 127.0.0.1 6379

저장하고 종료합니다.
이렇게 하면 Redis_6380 서비스 프로그램이 시작할 때마다 Redis_6379와의 복제 연결을 적극적으로 설정하게 됩니다.

4. 적용예 :


여기서는 Master-Slave가 설정되어 있다고 가정합니다.

  #启动master服务器。
    [root@Stephen-PC redis]# redis-cli -p 6379
    redis 127.0.0.1:6379>
    #情况Master当前数据库中的所有Keys。
    redis 127.0.0.1:6379> flushdb
    OK
    #在Master中创建新的Keys作为测试数据。
    redis 127.0.0.1:6379> set mykey hello
    OK
    redis 127.0.0.1:6379> set mykey2 world
    OK
    #查看Master中存在哪些Keys。
    redis 127.0.0.1:6379> keys *
    1) "mykey"
    2) "mykey2"
    
    #启动slave服务器。
    [root@Stephen-PC redis]# redis-cli -p 6380
    #查看Slave中的Keys是否和Master中一致,从结果看,他们是相等的。
    redis 127.0.0.1:6380> keys *
    1) "mykey"
    2) "mykey2"
    
    #在Master中删除其中一个测试Key,并查看删除后的结果。
    redis 127.0.0.1:6379> del mykey2
    (integer) 1
    redis 127.0.0.1:6379> keys *
    1) "mykey"
    
    #在Slave中查看是否mykey2也已经在Slave中被删除。
    redis 127.0.0.1:6380> keys *
    1) "mykey"

위 내용은 Redis Tutorial(9): Master-Slave Copy Configuration 예제의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.