Redis 클러스터는 여러 마스터-슬레이브 노드 그룹으로 구성된 분산 서비스 클러스터입니다. 복제, 고가용성 및 샤딩 기능을 갖추고 있습니다. Redis 클러스터는 Sentinel 없이 노드 제거 및 장애 조치 기능을 완료할 수 있습니다. 각 노드를 클러스터 모드로 설정해야 합니다. 이 클러스터 모드에는 중앙 노드가 없으며 수평으로 확장할 수 있습니다. 공식 문서에 따르면 선형적으로 수만 개의 노드로 확장할 수 있습니다(공식 권장 사항은 1,000개 이하). . Redis 클러스터의 성능과 고가용성은 이전 버전의 Sentinel 모드보다 우수하며 클러스터 구성이 매우 간단합니다.

환경 구축
시스템: centos7.4
Server Kingsoft Cloud
Ruby 환경 설치
[root@jsy-bj-test00 ~]# yum install -y ruby rubygems
redis 서비스 사본 6개 복사
[work@jsy-bj-test00 ~]$ cp -rp redis redis1 [work@jsy-bj-test00 ~]$ cp -rp redis redis2 [work@jsy-bj-test00 ~]$ cp -rp redis redis3
Redis 구성 파일 수정
#六个节点需做如下更改[work@jsy-bj-test00 ~]$ vim redis1/etc/redis.conf [work@jsy-bj-test00 ~]$ sed -i 's/port 6379/port 6380/g' redis5/etc/redis.conf #修改端口 port 6380#打开注释,开启集群模式cluster-enabled yes#集群的配置文件cluster-config-file nodes-6380.conf [work@jsy-bj-test00 ~]$ sed -i 's/cluster-config-file nodes-6379.conf/cluster-config-file nodes-6380.conf/g' redis5/etc/redis.conf#pidfile文件pidfile /var/run/redis_6380.pid [work@jsy-bj-test00 ~]$ sed -i 's/pidfile \/var\/run\/redis_6380.pid/pidfile \/var\/run\/redis_6380.pid/g' redis5/etc/redis.conf#日志文件 logfile "/home/work/logs/redis/6380.log"[work@jsy-bj-test00 ~]$ sed -i 's/logfile "\/home\/work\/logs\/redis\/6379.log"/logfile "\/home\/work\/logs\/redis\/6380.log"/g' redis5/etc/redis.conf#rdb持久化文件 dbfilename dump6380.rdb [work@jsy-bj-test00 ~]$ sed -i 's/dbfilename dump6379.rdb/dbfilename dump6380.rdb/g' redis5/etc/redis.conf#请求超时,单位毫秒cluster-node-timeout 5000#开启aof持久化方式appendonly yes#配置持久化文件appendfilename "appendonly6379.aof"[work@jsy-bj-test00 ~]$ sed -i 's/appendfilename "appendonly6379.aof"/appendfilename "appendonly6383.aof"/g' redis5/etc/redis.conf
클러스터 쓰기 시작 스크립트 및 중지 스크립트
start_all.sh 스크립트 시작
/home/work/redis/bin/redis-server /home/work/redis/etc/redis.conf & /home/work/redis/bin/redis-server /home/work/redis/etc/redis6380.conf & /home/work/redis/bin/redis-server /home/work/redis/etc/redis6381.conf & /home/work/redis/bin/redis-server /home/work/redis/etc/redis6382.conf & /home/work/redis/bin/redis-server /home/work/redis/etc/redis6383.conf & /home/work/redis/bin/redis-server /home/work/redis/etc/redis6384.conf &
스크립트 중지 stop_all.sh
/home/work/redis/bin/redis-cli -p 6379 -a test shutdown /home/work/redis/bin/redis-cli -p 6380 -a test shutdown /home/work/redis/bin/redis-cli -p 6381 -a test shutdown /home/work/redis/bin/redis-cli -p 6382 -a test shutdown /home/work/redis/bin/redis-cli -p 6383 -a test shutdown /home/work/redis/bin/redis-cli -p 6384 -a test shutdown
클러스터 생성 명령 실행
다음 오류가 보고됩니다
[work@jsy-bj-test00 src]$ ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError) from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'from ./redis-trib.rb:25:in `
‘
원인: 오류 Redis 인터페이스를 설치할 때 Ruby 버전이 너무 낮습니다
[root@jsy-bj-test00 ~]# gem install redisFetching: redis-4.1.3.gem (100%) ERROR: Error installing redis: redis requires Ruby version >= 2.3.0.
해결책은 공식 웹사이트 http://www.ruby-lang.org/en/downloads/에서 최신 안정 버전 소스 코드를 다운로드하는 것입니다. 컴파일 및 설치
[work@jsy-bj-test00 soft]$ tar zxvf ruby-2.7.0.tar.gz [work@jsy-bj-test00 soft]$ cd ruby-2.7.0 [work@jsy-bj-test00 ruby-2.7.0]$ ./configure --prefix=/home/work/ruby && make && make install
redis 인터페이스 설치
[work@jsy-bj-test00 bin]$ gem install redis
클러스터 생성 명령을 다시 실행
[work@jsy-bj-test00 src]$ ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 >>> Creating cluster >>> Performing hash slots allocation on 6 nodes... ...... >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join... >>> Performing Cluster Check (using node 127.0.0.1:6379) ...... [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
생성 성공, 클러스터 상태 보기
[work@jsy-bj-test00 ~]$ ./redis/bin/redis-cli -h 127.0.0.1 -p 6379 -c 127.0.0.1:6379> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_sent:627 cluster_stats_messages_received:627
클러스터 노드 정보 보기
127.0.0.1:6379> cluster nodes 565246bf31d8e05e464db7455521b1a9f165a9cd 127.0.0.1:6380 master - 0 1578447776230 2 connected 5461-10922 1b99b2a1e4b530501476ab48422c75f30423fd19 127.0.0.1:6383 slave 565246bf31d8e05e464db7455521b1a9f165a9cd 0 1578447778233 5 connected 735ad5778458059316794b9378d4b81aaff20322 127.0.0.1:6379 myself,master - 0 0 1 connected 0-5460 757c2c11ecebfc607aa10a6877e348d0e2da484f 127.0.0.1:6381 master - 0 1578447777732 3 connected 10923-16383 f22efc2bcfcd11cee6487ebc9c75de3b59f5e1d0 127.0.0.1:6382 slave 735ad5778458059316794b9378d4b81aaff20322 0 1578447776230 4 connected b8bba94b9647caa8600363144fd7108082e45f56 127.0.0.1:6384 slave 757c2c11ecebfc607aa10a6877e348d0e2da484f 0 1578447777232 6 connected#这是很重要的命令,我们需要关心的信息有:#第一个参数:节点ID#第二个参数:IP:PORT@TCP 这里一个坑,jedis-2.9.0之前的版本解析@出错#第三个参数:标志(Master,Slave,Myself,Fail...)#第四个参数:如果是从机则是主机的节点ID#最后两个参数:连接的状态和槽的位置。
클러스터 관리 관련 명령
#集群增加节点,先复制两个配置文件,并修改配置文件内容[work@jsy-bj-test00 etc]$ cp -p redis.conf redis6385.conf [work@jsy-bj-test00 etc]$ cp -p redis.conf redis6386.conf [work@jsy-bj-test00 etc]$ sed -i 's/6379/6385/g' redis6385.conf [work@jsy-bj-test00 etc]$ sed -i 's/6379/6386/g' redis6386.conf
6385개 노드 시작
[work@jsy-bj-test00 bin]$ ./redis-server /home/work/redis/etc/redis6385.conf &
클러스터 관리 도구를 redis의 저장소에 부드럽게 연결
[work@jsy-bj-test00 bin]$ ln -s /home/work/soft/redis-3.2.11/src/redis-trib.rb /home/work/redis/bin/redis-trib.rb
클러스터 마스터에 새 노드 추가
[work@jsy-bj-test00 bin]$ ./redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379 >>> Adding node 127.0.0.1:6385 to cluster 127.0.0.1:6379 >>> Performing Cluster Check (using node 127.0.0.1:6379) ...... [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Send CLUSTER MEET to node 127.0.0.1:6385 to make it join the cluster. [OK] New node added correctly.
클러스터 상태 보기, 할당되지 않은 슬롯
[work@jsy-bj-test00 bin]$ ./redis-cli -h 127.0.0.1 -p 6379 -c cluster nodes d00d05f601df0b69df0c2cc532b636d2c83347be 127.0.0.1:6385 master - 0 1578450280191 0 connected
6385 노드에 슬롯 할당
[work@jsy-bj-test00 bin]$ ./redis-trib.rb reshard 127.0.0.1:6379 >>> Performing Cluster Check (using node 127.0.0.1:6379) ...... [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. How many slots do you want to move (from 1 to 16384)? 500 What is the receiving node ID? d00d05f601df0b69df0c2cc532b636d2c83347be Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the hash slots. Type 'done' once you entered all the source nodes IDs. Source node #1:allDo you want to proceed with the proposed reshard plan (yes/no)? yes#第一个参数:需要移动槽的个数,#第二个参数:接受槽的节点ID,#第三个参数:输入"all"表示从所有原节点中获取槽,#第四个参数:输入"yes"开始移动槽到目标结点id#查看6385节点信息,已经分配槽位[work@jsy-bj-test00 bin]$ ./redis-cli -h 127.0.0.1 -p 6379 -c cluster nodes d00d05f601df0b69df0c2cc532b636d2c83347be 127.0.0.1:6385 master - 0 1578452422167 7 connected 0-165 5461-5627 10923-11088
슬레이브 노드 추가, 6386 시작 노드에 가입하고
[work@jsy-bj-test00 bin]$ ./redis-server /home/work/redis/etc/redis6386.conf & [work@jsy-bj-test00 bin]$ ./redis-trib.rb add-node --slave --master-id d00d05f601df0b69df0c2cc532b636d2c83347be 127.0.0.1:6386 127.0.0.1:6385 >>> Adding node 127.0.0.1:6386 to cluster 127.0.0.1:6385 >>> Performing Cluster Check (using node 127.0.0.1:6385) ...... [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Send CLUSTER MEET to node 127.0.0.1:6386 to make it join the cluster. Waiting for the cluster to join. >>> Configure node as replica of 127.0.0.1:6385. [OK] New node added correctly.
6386 노드 상태 보기
[work@jsy-bj-test00 bin]$ ./redis-cli -h 127.0.0.1 -p 6379 -c cluster nodes 6845878cbef3fe25f19a70a8db3eb29abb1b9ea6 127.0.0.1:6386 slave d00d05f601df0b69df0c2cc532b636d2c83347be 0 1578452805439 7 connected
노드 삭제
[work@jsy-bj-test00 bin]$ ./redis-trib.rb del-node 127.0.0.1:6383 1b99b2a1e4b530501476ab48422c75f30423fd19 >>> Removing node 1b99b2a1e4b530501476ab48422c75f30423fd19 from cluster 127.0.0.1:6383 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node.
위 내용은 Redis 클러스터를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

redis 与其他数据库相比 与其他数据库相比, 与其他数据库相比 : 1) 速度极快 速度极快 速度极快, 读写操作通常在微秒级别; 2) 支持丰富的数据结构和操作; 3) 灵活的使用场景 3) 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 灵活的使用场景 3) redis 또는 기타 데이터베이스를 선택할 때 특정 요구 사항과 시나리오에 따라 다릅니다. Redis는 고성능 및 저도가 낮은 응용 프로그램에서 잘 수행됩니다.

Redis는 데이터 저장 및 관리에서 핵심적인 역할을하며 여러 데이터 구조 및 지속 메커니즘을 통해 현대 애플리케이션의 핵심이되었습니다. 1) Redis는 문자열, 목록, 컬렉션, 주문 컬렉션 및 해시 테이블과 같은 데이터 구조를 지원하며 캐시 및 복잡한 비즈니스 로직에 적합합니다. 2) RDB와 AOF의 두 가지 지속 방법을 통해 Redis는 신뢰할 수있는 스토리지 및 데이터의 빠른 복구를 보장합니다.

Redis는 대규모 데이터의 효율적인 저장 및 액세스에 적합한 NOSQL 데이터베이스입니다. 1.Redis는 여러 데이터 구조를 지원하는 오픈 소스 메모리 데이터 구조 스토리지 시스템입니다. 2. 캐싱, 세션 관리 등에 적합한 매우 빠른 읽기 및 쓰기 속도를 제공합니다. 3. REDIS는 RDB 및 AOF를 통해 지속성을 지원하고 데이터 보안을 보장합니다. 4. 사용 예제에는 기본 키 값 쌍 작업 및 고급 수집 중복 제거 기능이 포함됩니다. 5. 일반적인 오류에는 연결 문제, 데이터 유형 불일치 및 메모리 오버플로가 포함되므로 디버깅에주의를 기울여야합니다. 6. 성능 최적화 제안에는 적절한 데이터 구조 선택 및 메모리 제거 전략 설정이 포함됩니다.

실제 세계에서 Redis의 애플리케이션에는 다음이 포함됩니다. 1. 캐시 시스템으로서 데이터베이스 쿼리를 가속화, 2. 웹 응용 프로그램의 세션 데이터를 저장하려면 3. 실시간 순위를 구현하려면 메시지 전달을 메시지 큐로 단순화합니다. Redis의 다목적 성과 고성능은 이러한 시나리오에서 빛을 발합니다.

Redis는 고속, 다양성 및 풍부한 데이터 구조로 인해 두드러집니다. 1) Redis는 문자열, 목록, 컬렉션, 해시 및 주문 컬렉션과 같은 데이터 구조를 지원합니다. 2) 메모리를 통해 데이터를 저장하고 RDB 및 AOF 지속성을 지원합니다. 3) Redis 6.0에서 시작하여 멀티 스레드 I/O 작업이 도입되어 동시 동시성 시나리오에서 성능이 향상되었습니다.

redisisclassifiedasanoSqldatabaseBecauseItuseSakey-valuedatamodelinsteadofThraditionalRelationalDatabasemodel.Itoffersspeedandflexibility, makingIdealforreal-timeApplicationsandcaching, butitmaynotbesuitableforscenariosrequiringstrictaintetaintetaintetaintetaintetaintetaintegry

Redis는 데이터를 캐싱하여 분산 잠금 및 데이터 지속성을 구현하여 응용 프로그램 성능 및 확장 성을 향상시킵니다. 1) 캐시 데이터 : Redis를 사용하여 데이터 액세스 속도를 향상시키기 위해 자주 액세스하는 데이터를 캐시합니다. 2) 분산 잠금 : Redis를 사용하여 분산 된 잠금 장치를 구현하여 분산 환경에서 작동의 보안을 보장합니다. 3) 데이터 지속성 : 데이터 손실을 방지하기위한 RDB 및 AOF 메커니즘을 통한 데이터 보안을 보장합니다.

Redis의 데이터 모델 및 구조에는 5 가지 주요 유형이 포함됩니다. 1. 문자열 : 텍스트 또는 이진 데이터를 저장하는 데 사용되며 원자 연산을 지원합니다. 2. 목록 : 정렬 된 요소 컬렉션, 대기열 및 스택에 적합합니다. 세트 : 세트 작동을 지원하는 비 순차 고유 요소 세트. 4. 순서 세트 (SortedSet) : 순위에 적합한 점수가있는 고유 한 요소 세트. 5. 해시 테이블 (HASH) : 객체를 저장하는 데 적합한 키 값 쌍 모음.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
