Redis Sentinel Principal, 나는 오랫동안 당신을 참아 왔습니다!
❝redis 마스터-슬레이브 복제의 역할에는 "마스터-슬레이브 복제는 고가용성의 초석"이라는 말이 있습니다. 그렇다면 고가용성은 시스템이 복제할 수 없는 시간을 줄이는 것입니다. 6개의 나인을 기반으로 하는 제공은 고가용성을 달성하는 데 필수적입니다. 이 기사에서는 주로 센티넬 메커니즘을 소개하고, 인터뷰 가이드를 만들고, 이에 따라 기사 작성을 준비합니다. 이 로드맵에는 나중에 추가되지 않은 몇 가지 지식 포인트를 추가하겠습니다. 또한 댓글 영역에서 만나기를 기대합니다!❞

이 글에서는 주로 다음과 같은 측면에서 Sentinel을 소개합니다
Sentinel 소개 구성 Sentinel 작업 원칙
이 기사의 구현 환경
centos7.3 redis4.0 redis 작업 디렉토리 /usr/local/redis 가상 머신
1. 센티넬이란 무엇인가요? 마스터-슬레이브 복제를 구성할 때 몇 마디만 말씀드리자면 마스터 노드가 다운되는 상황이 발생합니다. 마스터노드가 다운되면 복제는 존재의미가 없지요.. 데이터가 왕인 시대에 데이터가 없으면 고가용성은 없습니다. 큰 형님이 이 문제를 도와주겠다고 했어요.
마스터노드 마스터는 보스로서 플레이를 이끌어주지 않으니까요. 네 명 중에서 보스를 선택하면 그와 함께 플레이하게 됩니다.
당신과 놀지 않는 상사가 돌아오면 그의 신원은 무효화되고 더 이상 당신의 상사가 될 수 없습니다. 그는 내가 선택한 보스하고만 플레이할 수 있습니다.
위의 대화 과정은 우리가 센티넬을 구성한다는 의미입니다. 우리가 함께 플레이하는 사람은 누구에게 데이터를 제공할 것인가? 일단 센티넬의 역할을 이해하면 계속할 것입니다.
"마지막으로 센티넬이 무엇인지 전문적인 용어로 설명해보겠습니다."
센티넬(Sentinel)은 영어 이름이 센티넬(Sentinel)로, 마스터-슬레이브 구조로 각 서버를 제어하는데 사용되는 분산 시스템입니다.모니터링, 마스터 노드가 실패하면 투표 메커니즘이 사용됩니다. 새 마스터 노드를 선택하고 모든 슬레이브 노드를 새 마스터 노드에 연결합니다. 监控
,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。
二、哨兵的作用
上文中我们谈到的对话过程就是哨兵的作用之一自动故障转移。
谈到作用肯定就是这个哨兵到底在工作中到底干了什么事情。我们先用比较干巴的概念描述一下,然后在下文的工作原理会一一谈到。
哨兵的三个作用监控、通知、自动转移故障
2. 보초의 역할
위에서 이야기한 대화 과정은 Sentinel의 기능 중 하나인 자동 장애 조치(Automatic Failover)입니다. 🎜🎜기능에 있어서는 이 파수꾼이 직장에서 하는 일과 정확히 일치해야 합니다. 먼저 비교적 건전한 개념으로 설명하고, 아래에서는 작동원리를 하나씩 이야기해보겠습니다. 🎜🎜 sentry의 세 가지 기능🎜<ul data-tool="mdnice编辑器" style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; color: #595959; list-style-type: circle;">
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">모니터링<ul style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; list-style-type: square;">
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">누구를 모니터링해야 하나요? 마스터-슬레이브 구조를 지원하려면 하나는 마스터 노드이고 다른 하나는 슬레이브 노드이므로 이 두 노드를 모니터링해야 합니다. </section></li>
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">마스터 노드와 슬레이브 노드가 정상적으로 실행되고 있는지 모니터링</section></li>
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">마스터 노드가 살아 있는지 여부와 마스터 노드와 슬레이브 노드의 실행 상태를 감지</section></li>
</ul></section></li>
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">Notify<ul style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; list-style-type: square;"><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;"> Sentinel이 서버에 문제가 있는 경우 다른 Sentinel에게 알림을 보냅니다. Sentinel은 WeChat 그룹과 동일하며 이 그룹에 게시됩니다. </section></li></ul></section></li>
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">자동 장애 조치<ul style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; list-style-type: square;"><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">마스터 노드의 다운이 감지되면 다운된 마스터 노드에 연결된 모든 슬레이브 노드의 연결을 끊고 슬레이브 노드 중 하나를 마스터 노드로 선택한 후 다른 노드를 교체합니다. 슬레이브 노드 노드는 이 최신 마스터 노드에 연결됩니다. 그리고 클라이언트에게 최신 서버 주소를 알려주세요. </section></li></ul></section></li>
</ul>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">여기서 한 가지 주의할 점은 Sentinel도 Redis 서버이지만 외부 세계에 어떠한 서비스도 제공하지 않는다는 점입니다. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">센티넬을 홀수로 구성하세요. 그렇다면 Sentinel 서버 수를 홀수로 구성하는 이유는 무엇입니까? 이 질문을 통해 아래에서 원하는 답변을 찾을 수 있습니다. </p>
<h1 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 25px;">
<span class="prefix" style="color: rgb(64, 184, 250); display: none;"></span><span class="content" style="display: inline-block; color: rgb(64, 184, 250);"> 2. 센티넬 구성 방법 </span><span class="suffix" style="display: inline-block; color: rgb(64, 184, 250);"></span>
</h1>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;"> 1. 준비 </span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">이 장에서는 센티넬 구성을 시작하고 사전 작업을 준비합니다. 아래 사진은 카카의 준비 모습입니다. 클라이언트 8개, 센티넬 3개, 마스터 노드 1개, 슬레이브 노드 2개, 마스터 노드 클라이언트 1개, 슬레이브 노드 클라이언트 1개를 시작합니다. <img src="/static/imghw/default1.png" data-src="https://img-blog.csdnimg.cn/2020060222590276.png" class="lazy" alt="Redis Sentinel Principal, 나는 오랫동안 당신을 참아 왔습니다!" style="max-width:90%"></p>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">2.Sentinel.conf 구성 해석</span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">sentinel에서 사용하는 구성 파일은<code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>sentinel.conf


cat sentinel.conf | grep -v '#' | grep -v '^$'

port 26379: 외부 서비스 포트 번호 dir /tmp: 센티넬 작업 정보 저장 sentinel monitor mymaster 127.0.0.1 6379 2: 모니터링 대상이 누구인지, 이름은 사용자 정의 가능, 뒤의 2 또한 마스터 노드가 다운된 것으로 판단하는 센티널이 두 개 있는 경우 마스터 노드는 일반적으로 센티널 수의 절반에 1을 더한 값으로 설정됩니다. sentinel down-after-milliseconds mymaster 30000: 센티널이 응답 없이 마스터 노드에 연결하는 데 시간이 얼마나 걸리나요? 이는 다운되었음을 의미합니다. 다음 30000은 밀리초, 즉 30초입니다. sentinel parallel-syncs mymaster 1: 이 구성 항목은 장애 조치 중에 새 마스터 노드와 동기화할 수 있는 최대 슬레이브 노드 수를 나타냅니다. 값이 작을수록 장애 조치를 완료하는 데 시간이 오래 걸립니다. 값이 클수록 데이터 동기화로 인해 사용할 수 없는 슬레이브 노드가 늘어납니다. sentinel 장애 조치 시간 초과 mymaster 180000: 동기화 프로세스 중에 완료하는 데 걸리는 시간이 유효한 것으로 간주됩니다. 시스템 기본값은 3분입니다.
3. 구성 시작
명령 사용 cat sentinel.conf | grep -v '#' | grep -v '^$' > ./data/sentinel-26379.conf
把sentinel.conf过滤后的信息移到/usr/local/redis/conf
下然后打开
sentinel-26379.conf
修改信息存放目录然后快速的复制俩个哨兵配置文件,端口为26380和26381。
sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf

마스터-슬레이브 복제가 정상적인 작동 상태인지 테스트하고 세 개의 Redis 서버를 시작하며 포트는 6379, 6380, 6381
마스터 노드 정보를 보면 슬레이브 노드가 2개 연결되어 있고 포트는 각각 6380과 6381입니다.
6379、6380、6381
查看主节点信息,是有俩台从节点在连接着,端口分别为6380、6381。
这里有一个小小的点就是lag怎么一个是1一个是0呢!lag是延迟时间,我这里是本地测试所以会出现0的情况,使用云服务器是很少出现的。lag的值为0和1都属于正常。测试主节点添加一个hash值,
hset kaka name kaka
여기서 작은 점은 시차 중 하나가 1이고 다른 하나가 0이라는 것입니다! lag는 지연 시간입니다. 로컬에서 테스트 중이라 0이 되는 상황이 발생합니다. 클라우드 서버를 사용할 때는 이런 일이 거의 발생하지 않습니다. 지연 값은 0과 1로 정상입니다.
해시 값을 추가하려면
hset kaka name kaka
테스트 후 마스터-슬레이브 구조가 정상적으로 실행되고 있습니다. Start a Sentinel
redis-sentinel 26379-sentinel.conf
连接26379哨兵,主要是最后一行,监控的主节点名为mymaster,状态正常,从节点有俩个,哨兵数量为1个
在来查看一下26379的哨兵配置信息,这个时候已经改动了
在启动一个
26380
的哨兵,redis-sentinel 26380-sentinel.conf
,这里注意一下最后一行多了一条信息,这个id就是我们26379
구성 파일에 새로 추가된 ID그러면 새로 추가된 26380 Sentinel의 ID이기도 한 Sentinel 26379의 클라이언트가 나옵니다
이번에는 26379 Sentinel의 구성 파일을 확인하고 있는데, 처음으로 구성 확인 파일에 26380 Sentinel이 구성되어 있지 않습니다. 두 번째로 볼 때 26380 Sentinel을 구성한 후에 해당 정보가 추가되었습니다.
마지막으로 Sentinel 클라이언트 3을 시작해야 합니다. 포트 번호는 26381입니다. 시작 후 Sentinel 26380의 정보를 추가하면 Sentinel 26381에도 구성 정보와 서버 정보가 변경됩니다.
여기까지 Sentinel 구성이 끝났습니다. 다음으로 마스터 노드를 종료하겠습니다. 30초를 기다린 후 26379 Sentinel의 클라이언트로 이동하게 되므로 여기에 몇 가지 새로운 정보가 추가되었습니다. 이 모든 정보가 완료되었습니다. 분석해 보겠습니다.
여기서 먼저 몇 가지 정보를 알아야 합니다
+sdown: 이 정보는 마스터 노드가 다운되었다고 생각하는 세 명의 파수꾼 중 하나를 나타냅니다. +odown: 이 정보는 다른 하나를 나타냅니다. Sentinel 두 대가 마스터 노드에 연결했는데 마스터 노드가 실제로 다운된 것을 발견하고 투표를 시작했습니다. 여기서 Kaka는 redis4.0을 사용하는데 이 정보는 버전마다 약간 다릅니다 + switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380: 여기까지는 센티넬이 시작한 투표의 결과가 나오고 포트 6380을 사용하는 Redis가 마스터 노드 +슬레이브 슬레이브 127.0.0.1로 선택됩니다. 6381 127.0.0.1 6381 @ mymaster 127.0 .0.1 6380: 여기서는 포트 6381과 6379와 새 마스터 노드 6380 +sdown 슬레이브 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 1을 연결합니다. 27.0.0.1 6380 : 마지막 문장은 포트 6379가 아직 온라인이 아니어서 오프라인으로 쫓겨났다는 것입니다
6379의 Redis 서버를 다시 온라인에 올려놓으면 Sentinel 서버가 두 문장으로 응답한 것을 볼 수 있습니다. 한 문장은 6379를 오프라인에서 제거하는 것입니다. 마지막 문장은 6379를 새 마스터 노드에 다시 연결하는 것입니다. 이때 마스터 노드는 6380입니다. Redis 클라이언트에서 6380이라는 값을 설정하여 마스터-슬레이브 복제가 제대로 작동하는지 확인해보세요.
새 마스터 노드 6380에 목록 유형을 추가하세요.6379와 6381에서 이 값을 얻으세요. 그게 전부입니다! 감시 모드 구성이 완료되었습니다.
3. Sentinel의 작동 원리
Sentinel을 구성한 후에는 작동 원리를 분석해야 합니다. Workflow를 알아야만 Sentinel을 더 잘 이해할 수 있습니다.
이 글에서 설명하는 원칙은 그리 딱딱하지 않습니다! 기술 문서를 스토리로 읽을 수 있습니다.
요컨대 센트리의 역할은 모니터링, 알림, 장애 조치입니다. 그러면 작동 원리도 이 세 가지 사항을 중심으로 진행됩니다.
1. 모니터링 워크플로우

센티넬은 info 명령을 보내고 모든 센티넬 상태, 마스터 노드 및 슬레이브 노드 정보를 저장합니다 마스터 노드는 redis 인스턴스의 정보를 기록하게 됩니다. 마스터 노드가 기록한 정보는 센티넬이 기록한 정보와 실제로는 약간의 차이가 있습니다. Sentinel도 마스터 노드에서 얻은 슬레이브 노드 정보를 기반으로 해당 슬레이브 노드에 info 명령을 보냅니다 Sentinel 2가 오면 마스터 노드도 변경하여 info 명령을 보내고 cmd를 생성합니다. 연결 이때 Sentinel 2도 Sentinel 1과 동일한 정보를 저장하지만, Sentinel 2개의 정보만 저장됩니다. 이때 각 센티널의 정보가 일관되도록 게시와 구독이 설정됩니다. 센티널 간 정보의 장기적인 대칭성을 보장하기 위해 센티넬은 서로에게 ping 명령도 보냅니다. 다른 Sentinel 3가 오면 동일한 작업을 수행하고 마스터 노드와 슬레이브 노드에 정보를 보냅니다. 그리고 Sentinel 1 및 Sentinel 2와 연결을 설정합니다.
2. 알림 워크플로
Sentinel은 마스터와 슬레이브의 모든 노드에 명령을 보내 상태를 확인하고 해당 정보를 Sentinel 구독에 게시합니다.
3. 장애 조치 원칙(이 기사의 초점)

센티널이 보고할 때까지 계속해서 게시 센티넬: hello to the 마스터 노드를 보냅니다. sdown. 이 단어는 여러분에게 조금 친숙해 보일 수도 있습니다. 그렇죠. 위에서 마스터 노드 연결을 끊은 후 Sentinel 서버에서 보고한 정보입니다. Sentinel이 마스터 노드 다운을 보고한 후에도 아직 완료되지 않은 상태이므로 마스터 노드가 다운되었음을 나타내는 메시지를 인트라넷에 게시합니다. 전송된 명령은
sentinel is-master-down-by-address-port
sentinel is-master-down-by-address-port
到自己的内网,确认一下第一个发送sentinel is-master-down-by-address-port
的哨兵说你说的对,这个家伙确实挂了。当所有人都认为主节点挂了后就会修改其状态为odown
。当一个哨兵认为主节点挂了标记的是sdown
,当半数哨兵都认为挂了其标记的状态是odown
🎜나머지 센트리가 지시를 받은 후 마스터 노드가 전화를 끊었나요? 가서 정지되는지 확인하겠습니다. 보낸 메시지도 hello입니다. 나머지 보초도 자신이 받은 메시지를 보내고 sentinel is-master-down-by-address-port
자신의 인트라넷으로 이동하여 전송된 첫 번째 항목을 확인하세요sentinel is-master-down-by-address-port
의 Sentinel이 당신 말이 맞다고 말했습니다. 이 사람은 정말 다운되었습니다. . 모두가 마스터 노드가 다운되었다고 생각하면 상태가 o아래
. 센티넬은 마스터 노드가 플래그 지정되었다고 간주합니다. color: rgb(53, 148, 247); background: rgba(59, 170, 250, 0.1); border-radius: 2px ; height: 21px; line-height: 22px;" >sdown, 보초 중 절반이 자신의 표시 상태가 odown
. 이것이 센티넬이 홀수로 구성되는 이유입니다.❝이때 Sentinel이 문제를 감지했으므로 어떤 Sentinel이 새로운 책임자를 선출할지를 담당합니다. 메인 노드는 장산이 갈 수 없고, 왕우도 갈 수 있습니다. 그러면 모든 파수꾼 중에서 리더를 선택해야 합니다.
❞
이번엔! 다섯 명의 파수꾼이 함께 회의를 할 것입니다. 모든 파수꾼은 인트라넷에 있을 것입니다. 그런 다음 그들이 할 일은 다섯 명의 파수꾼이 동시에 명령을 보내고 자신의 선거 시간을 전달하는 것입니다. sentinel is-master-down-by-address-port
각 보초는 후보자이자 유권자입니다. 각 보초는 하나의 투표권을 가지며, 봉투는 투표권을 나타냅니다. sentinel1과 sentinel4가 동시에 그룹에 선거 준비 지시를 보내면 sentinel2는 이때 지시를 먼저 받는 사람에게 투표하겠다고 합니다. sentinel1이 조기에 릴리스되면 sentinel2의 투표가 sentinel1에 적용됩니다.
투표는 한 센티넬의 투표가 전체 센티널 수의 절반이 될 때까지 이러한 규칙에 따라 시작됩니다. sentinel1의 투표 수가 총 Sentinel 수의 절반 이상에 도달한 후에 sentinel1이 선출된다고 가정합니다. 이때 다음 단계에 도달하게 됩니다.
위에서 Sentinel은 모든 슬레이브 노드를 돌아다니며 하나의 마스터 노드를 찾기 위해 sentinel1을 대표로 선택했습니다. 마스터 노드를 선택하는 데에는 무작위로 선택하는 것이 아니라 특정 규칙이 있습니다.
응답이 느린 사람은 종료됩니다. Sentinel은 모든 Redis에 정보를 보냅니다.
여기에서 데모 이후 오랫동안 원래 마스터 노드에서 연결이 끊어진 사람이 종료됩니다. 충분하지 않습니다. 새로운 슬레이브5가 추가되는 것은 의미가 없습니다!
위 3가지 사항으로 판단한 결과, 아직 salve4와slave5가 있으며, 우선순위 원칙에 따라 심사하게 됩니다.
우선순위가 동일하면 다른 판단이 이루어집니다. 슬레이브4의 오프셋이 90이고 슬레이브5의 오프셋이 90인 경우. 100이면 센티넬은 슬레이브4의 네트워크에 문제가 있다고 생각하게 될 것입니다! 그러면 Slave5가 새 마스터 노드로 선택됩니다. 슬레이브4와 슬레이브5의 오프셋이 동일하면 어떻게 되나요? 마지막 판단이 하나 남았습니다 마지막 단계는 직장 내 서열인 룬디드를 판단하는 것입니다. 즉, 룬디드의 생성 시간과 가장 빠른 시간을 기준으로 판단합니다. 1위를 차지하게 됩니다.
새 마스터 노드를 선택한 후에는 모든 노드에 지침을 보내야 합니다.
4. 요약
이것이 센티넬에 대한 모든 지식 포인트입니다. 이 글에서 가장 중요한 것은 센티넬의 작동 원리입니다. 작동 원리를 간략하게 살펴보겠습니다.
첫 번째 모니터와 모든 센티널은 정보를 동기화합니다
센티널은 구독에 정보를 게시합니다
Failover
Sentinel은 마스터 노드가 오프라인 상태임을 발견했습니다 Sentinel은 담당자에 대한 투표를 시작했습니다 담당자는 새로운 마스터 노드를 선출합니다 새 마스터 노드는 원래 마스터 노드의 연결을 끊습니다. , 다른 슬레이브 노드가 연결됩니다. 새로운 마스터 노드는 원래 마스터 노드가 온라인 상태가 된 후 슬레이브 노드로 연결됩니다.
위 내용은 센티넬에 대한 카카의 이해입니다. 만약 실수가 있을 수 있다면 카카는 제 시간에 이를 수정해 줄 것입니다.
❝배움에 대한 끈기, 블로그에 대한 끈기, 공유에 대한 끈기는 카카가 경력 이후부터 지켜온 신념입니다. 거대한 인터넷에 올라온 카카의 글이 여러분에게 조금이나마 도움이 되기를 바랍니다. 다음 호에는 당신이 있습니다.
❞
추천: "Redis Tutorial"
위 내용은 Redis Sentinel Principal, 나는 오랫동안 당신을 참아 왔습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











Redis Cluster Mode는 Sharding을 통해 Redis 인스턴스를 여러 서버에 배포하여 확장 성 및 가용성을 향상시킵니다. 시공 단계는 다음과 같습니다. 포트가 다른 홀수 redis 인스턴스를 만듭니다. 3 개의 센티넬 인스턴스를 만들고, Redis 인스턴스 및 장애 조치를 모니터링합니다. Sentinel 구성 파일 구성, Redis 인스턴스 정보 및 장애 조치 설정 모니터링 추가; Redis 인스턴스 구성 파일 구성, 클러스터 모드 활성화 및 클러스터 정보 파일 경로를 지정합니다. 각 redis 인스턴스의 정보를 포함하는 Nodes.conf 파일을 작성합니다. 클러스터를 시작하고 Create 명령을 실행하여 클러스터를 작성하고 복제본 수를 지정하십시오. 클러스터에 로그인하여 클러스터 정보 명령을 실행하여 클러스터 상태를 확인하십시오. 만들다

Redis 데이터를 지우는 방법 : Flushall 명령을 사용하여 모든 키 값을 지우십시오. FlushDB 명령을 사용하여 현재 선택한 데이터베이스의 키 값을 지우십시오. 선택을 사용하여 데이터베이스를 전환 한 다음 FlushDB를 사용하여 여러 데이터베이스를 지우십시오. del 명령을 사용하여 특정 키를 삭제하십시오. Redis-Cli 도구를 사용하여 데이터를 지우십시오.

Redis 지시 사항을 사용하려면 다음 단계가 필요합니다. Redis 클라이언트를 엽니 다. 명령 (동사 키 값)을 입력하십시오. 필요한 매개 변수를 제공합니다 (명령어마다 다름). 명령을 실행하려면 Enter를 누르십시오. Redis는 작업 결과를 나타내는 응답을 반환합니다 (일반적으로 OK 또는 -err).

Redis를 사용하여 잠금 작업을 사용하려면 SetNX 명령을 통해 잠금을 얻은 다음 만료 명령을 사용하여 만료 시간을 설정해야합니다. 특정 단계는 다음과 같습니다. (1) SETNX 명령을 사용하여 키 값 쌍을 설정하십시오. (2) 만료 명령을 사용하여 잠금의 만료 시간을 설정하십시오. (3) DEL 명령을 사용하여 잠금이 더 이상 필요하지 않은 경우 잠금을 삭제하십시오.

Redis의 대기열을 읽으려면 대기열 이름을 얻고 LPOP 명령을 사용하여 요소를 읽고 빈 큐를 처리해야합니다. 특정 단계는 다음과 같습니다. 대기열 이름 가져 오기 : "큐 :"와 같은 "대기열 : my-queue"의 접두사로 이름을 지정하십시오. LPOP 명령을 사용하십시오. 빈 대기열 처리 : 대기열이 비어 있으면 LPOP이 NIL을 반환하고 요소를 읽기 전에 대기열이 존재하는지 확인할 수 있습니다.

Redis는 해시 테이블을 사용하여 데이터를 저장하고 문자열, 목록, 해시 테이블, 컬렉션 및 주문한 컬렉션과 같은 데이터 구조를 지원합니다. Redis는 Snapshots (RDB)를 통해 데이터를 유지하고 WRITE 전용 (AOF) 메커니즘을 추가합니다. Redis는 마스터 슬레이브 복제를 사용하여 데이터 가용성을 향상시킵니다. Redis는 단일 스레드 이벤트 루프를 사용하여 연결 및 명령을 처리하여 데이터 원자력과 일관성을 보장합니다. Redis는 키의 만료 시간을 설정하고 게으른 삭제 메커니즘을 사용하여 만료 키를 삭제합니다.

Redis 소스 코드를 이해하는 가장 좋은 방법은 단계별로 이동하는 것입니다. Redis의 기본 사항에 익숙해집니다. 특정 모듈을 선택하거나 시작점으로 기능합니다. 모듈 또는 함수의 진입 점으로 시작하여 코드를 한 줄씩 봅니다. 함수 호출 체인을 통해 코드를 봅니다. Redis가 사용하는 기본 데이터 구조에 익숙해 지십시오. Redis가 사용하는 알고리즘을 식별하십시오.

메시지 미들웨어로서 Redis는 생산 소비 모델을 지원하고 메시지를 지속하고 안정적인 전달을 보장 할 수 있습니다. Middleware 메시지로 Redis를 사용하면 낮은 대기 시간, 신뢰할 수 있으며 확장 가능한 메시징이 가능합니다.
