목차
1. 클러스터는 왜 필요한가요?
2. 마스터-슬레이브 모드
소개
Function
3. 마스터-슬레이브 클러스터 구축
3.1.
3.2、搭建一主二从
启动Redis服务器
设置主从关系
四、知识讲解
知识一
知识二
知识三
a、命令行设置主从关系
b、配置文件设置的主从关系
五、复制原理
六、主从模式的优缺点
优点
缺点
데이터 베이스 Redis Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

May 30, 2023 am 10:47 AM
redis

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

1. 클러스터는 왜 필요한가요?

실제 개발에서는 다음과 같은 이유로 엔지니어링 프로젝트에서 하나의 Redis만 사용할 수 없습니다.

(1) 구조상 단일 Redis 서버는 단일 지점의 위험이 있습니다. , 그리고 하나의 서버가 모든 요청의 부하를 감당해야 하기 때문에 부담이 상대적으로 높습니다

(2) 용량 측면에서 단일 Redis 서버의 메모리 용량은 제한되어 있습니다. Redis 서버는 256G이며 모든 메모리를 사용할 수 없습니다. Redis 스토리지 메모리의 경우 일반적으로 단일 Redis에서 사용하는 최대 메모리는 20G를 초과해서는 안됩니다.

(3) 단일 Redis 서버의 읽기 및 쓰기 성능은 제한되어 있으며, 클러스터를 사용하면 읽기 및 쓰기 성능을 향상시킬 수 있습니다.

2. 마스터-슬레이브 모드

소개

현재 Redis에는 세 가지 클러스터 모드가 있습니다. 즉, 마스터-슬레이브 모드, 센티넬 모드 및 클러스터 모드는 세 가지 모드 중 가장 간단합니다. 마스터-슬레이브 복제는 하나의 Redis 서버에서 다른 Redis 서버로 데이터를 복사하는 것을 의미합니다. 첫 번째 노드를 마스터 노드(마스터/리더)라고 하고, 두 번째 노드를 슬레이브 노드(슬레이브/팔로워)라고 합니다.

참고:

(1) 데이터 복제는 단방향이며 마스터 노드에서 슬레이브 노드로만 이루어집니다. Master는 주로 쓰기를 담당하고, Slave는 주로 읽기를 담당합니다.
(2) 기본적으로 각 Redis 서버는 마스터 노드입니다.
(3) 마스터 노드는 여러 개의 슬레이브 노드를 가질 수 있지만(또는 슬레이브 노드가 없을 수도 있음) 슬레이브 노드는 하나의 마스터 노드만 가질 수 있습니다.

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

Function

1. 데이터 중복: 마스터-슬레이브 복제는 지속성 외에 데이터 중복 방법인 데이터의 핫 백업을 구현합니다.
2. 장애 복구: 마스터 노드에 문제가 발생하면 슬레이브 노드가 서비스를 제공하여 신속한 장애 복구를 달성할 수 있습니다. 이는 실제로 일종의 서비스 중복입니다.
3. 고가용성(클러스터)의 초석: 마스터-슬레이브 복제는 Sentinel 및 클러스터 구현의 기초이기도 합니다. 따라서 마스터-슬레이브 복제는 Redis 고가용성의 기초입니다.
4. 로드 밸런싱: 읽기와 쓰기의 분리가 결합된 마스터-슬레이브 복제를 기반으로 마스터 노드는 쓰기 서비스를 제공하고 슬레이브 노드는 읽기 서비스를 제공할 수 있습니다(즉, Redis 데이터를 쓸 때, 애플리케이션은 마스터 노드에 연결하고 Redis 데이터 애플리케이션 연결 슬레이브 노드를 읽을 때 서버 로드를 공유합니다. 특히 쓰기가 적고 읽기가 많은 시나리오에서 여러 슬레이브 노드를 통해 읽기 로드를 공유하면 동시성이 크게 증가할 수 있습니다. 레디스 서버.

예를 들어 전자상거래 웹사이트에서 제품은 한 번만 업로드하면 되지만 사용자는 여러 번 볼 수 있습니다, 즉 "적게 쓰고 자세히 읽어보세요"를 찾을 수 있습니다. 마스터-슬레이브 복제는 읽기와 쓰기를 분리, 서버에 대한 부담을 줄입니다:

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

3. 마스터-슬레이브 클러스터 구축

3.1.

1. 세 개의 구성 파일(원래 이름: redis.conf)을 복사하고 각각 redis79.conf, redis80.conf, redis81.conf로 이름을 바꿉니다.

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

2. 구성 파일 수정

(1) redis79.conf

포트 번호 수정

port 6379
로그인 후 복사

백그라운드에서 실행되도록 설정

daemonize:yes
로그인 후 복사
로그인 후 복사
로그인 후 복사

설정 로그 파일 이름

logfile “6379.log"
로그인 후 복사

db 파일 이름 설정

dbfilename dump6379.rdb
로그인 후 복사

(2) redis80.conf 수정

포트 번호 수정

port 6380
로그인 후 복사

백그라운드에서 실행되도록 설정

daemonize:yes
로그인 후 복사
로그인 후 복사
로그인 후 복사

녹화 프로세스 ID 파일명 설정

pidfile /var/run/redis_6380.pid
로그인 후 복사

로그 파일명 설정

logfile “6380.log"
로그인 후 복사

db 파일명 설정

dbfilename dump6380.rdb
로그인 후 복사

(3) redis81.conf 수정

포트 번호 수정

port 6381
로그인 후 복사

백그라운드에서 실행되도록 설정

daemonize:yes
로그인 후 복사
로그인 후 복사
로그인 후 복사

설정 프로세스 ID 파일 이름 기록

pidfile /var/run/redis_6381.pid
로그인 후 복사

로그 파일 이름 설정

logfile “6381.log"
로그인 후 복사

DB 파일 이름 설정

dbfilename dump6381.rdb
로그인 후 복사

이러한 속성의 기능은 다음과 같습니다.

pid(포트 ID): 기록됨 프로세스의 ID와 잠금이 설정된 파일입니다. 프로그램이 여러 번 시작되는 것을 방지합니다. logfile: 로그 파일의 위치를 ​​지웁니다.
dbfilename: dumpxxx.file #영구 파일 위치
port: 프로세스가 차지하는 포트 번호

3.2、搭建一主二从

启动Redis服务器

注意:默认情况下,每台Reids服务器都是主节点,而我们要搭建主从只需要在从机那本搭建即可。

现在分别启动redis79,redis80,redis81服务器。

redis-server redis79.conf 
redis-server redis80.conf
redis-server redis81.conf
로그인 후 복사

使用以下命令,查看是否启动成功:

 ps -ef|grep redis
로그인 후 복사

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

打开三个客户端窗口,分别对应操作三个Redis服务器。

输入命令:

注意要指定端口,才知道我们要打开哪一个Redis。

窗口一:

redis-cli -p 6379
로그인 후 복사

窗口二:

redis-cli -p 6380
로그인 후 복사

窗口三:

redis-cli -p 6381
로그인 후 복사

设置主从关系

我们将redis79设置为主节点,而将redis80和redis81设置为从结点。

配置主机的IP地址和端口号,相当于想认其为自己的老大。

redis80:

#SLAVEOF IP地址  端口
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK
로그인 후 복사

redis81:

#SLAVEOF IP地址  端口
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK
로그인 후 복사

这个时候,我们在从机使用INFO命令就可以查看主从关系了:

info replication
로그인 후 복사

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

而此时我们去主机redis79中使用同样的命令进行查看:

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

现在我们的一主二从的关系就成功搭建好了!

提示:如果要将从机变成主机,我们只需要在从机执行以下命令,即可让自己变为主机。

SLAVEOF no one
로그인 후 복사

四、知识讲解

知识一

主机可以进行读写操作,而从机只能读操作。

注意:主机中的所有信息和数据,都会自动被从机保存。

主机:

127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> get key1
"v1"
로그인 후 복사

从机:

127.0.0.1:6380> get key1  
"v1"
127.0.0.1:6380> set key2 v2    #进行写操作就会报错,提示从机只能进行读操作
(error) READONLY You can't write against a read only replica.
로그인 후 복사

知识二

主机如果宕机了,从机依旧可以读取到主机宕机前的数据,但仍然没有写操作,如果主机恢复过来了,从机依旧可以获取到主机写的数据。

(1)停止主机进程(演示主机宕机了)

停止进程的命令:

kill -9 pid #pid为redis进程号
로그인 후 복사

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

(2)从机获取宕机前主机写入的数据

可以发现,能够顺利拿到,但仍然是无法进行写操作的。

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

(3)恢复主机

redis-server redis79.conf
로그인 후 복사

(4)主机重新写入数据,从机获取最新数据。

主机写入数据:

127.0.0.1:6379> set k2 yixin
OK
로그인 후 복사

从机读取最新数据:

127.0.0.1:6380> get k2
"yixin"
로그인 후 복사

知识三

两种配置方式下的从机断开情况

a、命令行设置主从关系

从机断开了,其重新连接后变为主机,能拿到断开之前的数据,但拿不到主机新写入的值,如果重新设置主从关系,就可以拿到主机全部的数据了。

(1)停止从机进程。

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

(2)主机写入新数据。

127.0.0.1:6379> set k3 new
OK
로그인 후 복사

(3)重新启动从机服务器。

redis-server redis80.conf
로그인 후 복사
로그인 후 복사

(4)尝试获取从机宕机前主机写入的数据,发现可以拿到。

127.0.0.1:6380> get k1
"v1"
로그인 후 복사

(5)尝试获取从机宕机期间主机写入的数据,发现无法拿到了。

127.0.0.1:6380> get k3
(nil)
로그인 후 복사

此次我们可以进行查看主从关系,由于是命令行配置的,所以重启之后又变回主机了。

127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0
로그인 후 복사

(6)如果要拿到主机的所有数据,只要执行以下命令重新配置主从关系就可以了。

slaveof 127.0.0.1 6379
로그인 후 복사

b、配置文件设置的主从关系

从机断开后,重新连接,也是可以拿到主机的全部数据的。

(1)修改配置文件redis80.conf,添加主从关系。

#指定主机的ip与port
slaveof 127.0.0.1 6379
로그인 후 복사

(2)主机添加新数据

127.0.0.1:6379> set k5 hello
OK
로그인 후 복사

(3)重新启动redis80服务器。

redis-server redis80.conf
로그인 후 복사
로그인 후 복사

(4)获取从机宕机期间主机新写入的数据,发现现在可以顺利拿到了。

127.0.0.1:6380> get k5
"hello"
로그인 후 복사

我们来查看6380的主从关系,可以发现在重启的时候就已经设置好主从关系了

Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법

五、复制原理

(1)Slave 启动成功连接到 Master 后会发送一个sync同步命令

(2)Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。

(3)全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

(4)增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步。

注意:只要是重新连接master,一次完全同步(全量复制)将被自动执行! 我们的数据一定可以在从机中看到。

六、主从模式的优缺点

优点

(1)同一个Master可以同步多个Slaves。
(2)Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。因此我们可以将Redis的Replication架构视为图结构。
(3)Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
(4)Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
(5)为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。
(6)Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。
(7)支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。

缺点

(1) Redis 主从模式不具备自动容错和恢复功能,如果主节点宕机,Redis 集群将无法工作,此时需要人为干预,将从节点提升为主节点。
(2) 如果主机宕机前有一部分数据未能及时同步到从机,即使切换主机后也会造成数据不一致的问题,从而降低了系统的可用性。
(3) 因为只有一个主节点,所以其写入能力和存储能力都受到一定程度地限制。
(4) 在进行数据全量同步时,若同步的数据量较大可能会造卡顿的现象。

위 내용은 Redis 클러스터의 마스터-슬레이브 모드를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11 10.0.22000.100 설치 시 발생하는 0x80242008 오류 해결 방법 Windows 11 10.0.22000.100 설치 시 발생하는 0x80242008 오류 해결 방법 May 08, 2024 pm 03:50 PM

1. [시작] 메뉴를 시작하여 [cmd]를 입력하고 [명령 프롬프트]를 마우스 오른쪽 버튼으로 클릭한 후 [관리자 권한으로 실행]을 선택합니다. 2. 다음 명령을 순서대로 입력합니다(주의 깊게 복사하여 붙여넣기): SCconfigwuauservstart=auto, Enter SCconfigbitsstart=auto, Enter 누르기 SCconfigcryptsvcstart=auto, Enter SCconfigtrustedinstallerstart=auto, Enter SCconfigwuauservtype=share, Enter netstopwuauserv , Enter netstopcryptS 누르기

PHP 함수 병목 현상을 분석하고 실행 효율성을 향상시킵니다. PHP 함수 병목 현상을 분석하고 실행 효율성을 향상시킵니다. Apr 23, 2024 pm 03:42 PM

PHP 함수 병목 현상은 성능 저하로 이어지며, 이는 병목 현상 기능을 찾아 성능 분석 도구를 사용하는 단계를 통해 해결할 수 있습니다. 재계산을 줄이기 위해 결과를 캐싱합니다. 작업을 병렬로 처리하여 실행 효율성을 높입니다. 문자열 연결을 최적화하고 대신 내장 함수를 사용하세요. 사용자 정의 함수 대신 내장 함수를 사용하십시오.

Golang API 캐싱 전략 및 최적화 Golang API 캐싱 전략 및 최적화 May 07, 2024 pm 02:12 PM

GolangAPI의 캐싱 전략은 성능을 향상시키고 서버 부하를 줄일 수 있습니다. 일반적으로 사용되는 전략은 LRU, LFU, FIFO 및 TTL입니다. 최적화 기술에는 적절한 캐시 스토리지 선택, 계층적 캐싱, 무효화 관리, 모니터링 및 조정이 포함됩니다. 실제 사례에서 LRU 캐시는 데이터베이스에서 사용자 정보를 얻기 위한 API를 최적화하는 데 사용됩니다. 그렇지 않으면 캐시를 데이터베이스에서 얻은 후 업데이트할 수 있습니다.

erlang과 golang 중 어느 것이 더 나은 성능을 갖고 있나요? erlang과 golang 중 어느 것이 더 나은 성능을 갖고 있나요? Apr 21, 2024 am 03:24 AM

Erlang과 Go 사이에는 성능 차이가 있습니다. Erlang은 동시성이 뛰어나고 Go는 더 높은 처리량과 더 빠른 네트워크 성능을 제공합니다. Erlang은 높은 동시성을 요구하는 시스템에 적합한 반면, Go는 높은 처리량과 짧은 대기 시간을 요구하는 시스템에 적합합니다.

PHP 개발의 캐싱 메커니즘 및 응용 실습 PHP 개발의 캐싱 메커니즘 및 응용 실습 May 09, 2024 pm 01:30 PM

PHP 개발에서 캐싱 메커니즘은 자주 액세스하는 데이터를 메모리나 디스크에 임시 저장하여 데이터베이스 액세스 횟수를 줄여 성능을 향상시킵니다. 캐시 유형에는 주로 메모리, 파일 및 데이터베이스 캐시가 포함됩니다. 캐싱은 내장 함수나 캐시_get() 및 Memcache와 같은 타사 라이브러리를 사용하여 PHP에서 구현할 수 있습니다. 일반적인 실제 응용 프로그램에는 쿼리 성능을 최적화하기 위한 데이터베이스 쿼리 결과 캐싱과 렌더링 속도를 높이기 위한 페이지 출력 캐싱이 포함됩니다. 캐싱 메커니즘은 웹사이트 응답 속도를 효과적으로 향상시키고, 사용자 경험을 향상시키며, 서버 부하를 줄입니다.

PHP 배열 페이지 매김에서 Redis 캐시를 사용하는 방법은 무엇입니까? PHP 배열 페이지 매김에서 Redis 캐시를 사용하는 방법은 무엇입니까? May 01, 2024 am 10:48 AM

Redis 캐시를 사용하면 PHP 배열 페이징 성능을 크게 최적화할 수 있습니다. 이는 다음 단계를 통해 달성할 수 있습니다. Redis 클라이언트를 설치합니다. Redis 서버에 연결합니다. 캐시 데이터를 생성하고 "page:{page_number}" 키를 사용하여 각 데이터 페이지를 Redis 해시에 저장합니다. 캐시에서 데이터를 가져오고 대규모 어레이에서 비용이 많이 드는 작업을 피하세요.

Win11 영어 21996을 중국어 간체 22000으로 업그레이드하는 방법_Win11 영어 21996을 중국어 간체 22000으로 업그레이드하는 방법 Win11 영어 21996을 중국어 간체 22000으로 업그레이드하는 방법_Win11 영어 21996을 중국어 간체 22000으로 업그레이드하는 방법 May 08, 2024 pm 05:10 PM

먼저 시스템 언어를 중국어 간체 표시로 설정하고 다시 시작해야 합니다. 물론 이전에 표시 언어를 중국어 간체로 변경했다면 이 단계를 건너뛰어도 됩니다. 다음으로 레지스트리 조작을 시작하여 regedit.exe를 실행하고 왼쪽 탐색바 또는 상단 주소 표시줄의 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage로 직접 이동한 후 InstallLanguage 키 값과 Default 키 값을 0804로 수정합니다(영어 en-로 변경하려는 경우). 먼저 시스템 표시 언어를 en-us로 설정하고 시스템을 다시 시작한 다음 모든 항목을 0409로 변경해야 합니다. 이 시점에서 시스템을 다시 시작해야 합니다.

navicat을 redis에 연결할 수 있나요? navicat을 redis에 연결할 수 있나요? Apr 23, 2024 pm 05:12 PM

네, Navicat은 사용자가 키를 관리하고, 값을 보고, 명령을 실행하고, 활동을 모니터링하고, 문제를 진단할 수 있는 Redis에 연결할 수 있습니다. Redis에 연결하려면 Navicat에서 "Redis" 연결 유형을 선택하고 서버 세부 정보를 입력하세요.

See all articles