Windows에서 Redis 클러스터를 구축하는 방법
서문:
클러스터링은 안정적이고 효율적인 상태를 달성하기 위해 서버 수를 추가하여 동일한 서비스를 제공하는 것을 의미합니다. Redis 클러스터를 사용하는 이유는 무엇입니까? Redis 클러스터는 Redis의 읽기 및 쓰기 기능을 향상시킬 수 있습니다.
이제 정식으로 Redis 클러스터에 대해 알아봅시다.
준비 작업:
4가지 구성 요소가 필요합니다: Redis, Ruby 언어 런타임 환경, Redis Ruby 드라이버 redis-xxxx.gem 및 Redis 클러스터 redis-trib.rb 생성 도구. Redis-trib.rb 도구를 사용하여 Redis 클러스터를 생성합니다. 이 파일은 Ruby 언어로 작성되어 있으므로 Ruby 개발 환경을 설치하고 redis-xxxx.gem을 드라이브해야 합니다.
1) Redis 설치 파일 다운로드: https://github.com/MSOpenTech/redis/releases/ Redis는 msi 및 zip 형식의 다운로드 파일을 제공합니다. Redis-x64-3.2.100 버전. 여기.
2) Ruby 설치 파일 다운로드: http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
3) Ruby 환경에서 Redis 드라이버 다운로드: https:// rubygems.org/gems/redis/versions/3.2.2, 호환성을 고려하여 여기서 다운로드되는 것은 버전 3.2.2
입니다. 참고: 페이지 오른쪽 하단에 있는 관련 링크에서 다운로드하세요
4) Redis 공식 버전 다운로드 Redis 클러스터를 생성하는 Ruby 스크립트 파일 redis-trib.rb, 경로는 다음과 같습니다: https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb
Redis 설치
는 Redis-x64-3.2.100.zip의 압축을 풀고 다운로드됩니다. 사용 편의성을 위해 D:Redis-ClusterRedis와 같은 드라이브 문자의 루트 디렉터리에 배치하는 것이 좋습니다. -x64-3.2.100.
Redis를 설치하고 3개의 인스턴스를 실행합니다(Redis 클러스터에는 최소 3개의 노드가 필요하며, 3개 미만은 생성할 수 없습니다).
구성 파일을 통해 6개의 다른 Redis 인스턴스를 시작합니다. Redis의 기본 포트는 6379이므로 여기서는 6380입니다. 6381, 6382, 6383, 6384, 6385는 6개의 Redis 인스턴스를 실행하는 데 사용됩니다.
참고:
(1) 불필요한 오류를 방지하려면 구성 파일을 utf8 형식으로 저장해야 하며 주석을 포함하지 않아야 합니다.
(2) 구성 파일에 로그를 저장하는 방법에는 두 가지가 있습니다. 파일, 시스템 로그에 저장) 필요에 따라 둘 중 하나를 선택하십시오:
loglevel notice #日志的记录级别,notice是适合生产环境的 logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录 syslog-enabled yes #是否使用系统日志 syslog-ident redis6380 #在系统日志的标识名
여기서는 파일에 저장하는 방법을 사용하므로 먼저 Redis 디렉터리 D:Redis-ClusterRedis-x64- 아래에 새 Logs 폴더를 만듭니다. 3.2.100 .
Redis 설치 루트 디렉터리에서 인코딩 형식 utf-8(redis.6380.conf, redis.6381.conf, redis.6382.conf, redis.6383.conf, redis.6384.conf, redis)을 사용하여 구성 파일을 만듭니다. .6385.conf.
redis.6380.conf,
port 6380 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6380_log.txt" appendonly yes appendfilename "appendonly.6380.aof" cluster-enabled yes cluster-config-file nodes.6380.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6381.conf,
port 6381 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6381_log.txt" appendonly yes appendfilename "appendonly.6381.aof" cluster-enabled yes cluster-config-file nodes.6381.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6382.conf,
port 6382 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6382_log.txt" appendonly yes appendfilename "appendonly.6382.aof" cluster-enabled yes cluster-config-file nodes.6382.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6383.conf,
port 6383 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6383_log.txt" appendonly yes appendfilename "appendonly.6383.aof" cluster-enabled yes cluster-config-file nodes.6383.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6384.conf,
port 6384 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6384_log.txt" appendonly yes appendfilename "appendonly.6384.aof" cluster-enabled yes cluster-config-file nodes.6384.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6385.conf
port 6385 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6385_log.txt" appendonly yes appendfilename "appendonly.6385.aof" cluster-enabled yes cluster-config-file nodes.6385.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
(동영상 공유 학습: redis 동영상 튜토리얼)
구성은 다음과 같이 설명됩니다.
port 6380 #端口号 loglevel notice #日志的记录级别,notice是适合生产环境的 logfile "Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录 syslog-enabled yes #是否使用系统日志 syslog-ident redis6380 #在系统日志的标识名 appendonly yes #数据的保存为aof格式 appendfilename "appendonly.6380.aof" #数据保存文件 cluster-enabled yes #是否开启集群 cluster-config-file nodes.6380.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
위 구성 파일을 Redis 디렉토리에 저장하고 이 구성 파일을 사용하여 6 Redis 서비스를 설치하는 경우 명령은 다음과 같습니다.
D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6380.conf --service-name redis6380 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6381.conf --service-name redis6381 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6382.conf --service-name redis6382 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6383.conf --service-name redis6383 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6384.conf --service-name redis6384 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6385.conf --service-name redis6385
참고:
1) Redis 클러스터를 다시 시작할 때 문제를 방지하려면 redis.6380.conf와 같은 구성 파일의 전체 경로를 사용하는 것이 가장 좋습니다.
2) 제거 명령은 다음과 같습니다.
D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6380.conf --service-name redis6380 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6381.conf --service-name redis6381 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6382.conf --service-name redis6382 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6383.conf --service-name redis6383 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6384.conf --service-name redis6384 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6385.conf --service-name redis6385
Start this 6 services, 명령은 다음과 같습니다.
D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6380 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6381 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6382 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6383 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6384 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6385
실행 결과:
Ruby 설치
(1) Ruby 환경 설치.
다운로드한 "rubyinstaller-2.2.4-x64.exe"를 두 번 클릭하여 설치합니다. 마찬가지로, 간편한 작동을 위해 C:Ruby22와 같은 드라이브 문자의 루트 디렉터리에 설치하는 것이 좋습니다. -x64. 설치 중 마지막 2개를 선택하세요. 옵션
은 시스템의 환경 변수에 ruby를 추가한다는 의미이며 cmd 명령에서 직접 ruby 명령을 사용할 수 있습니다
(1) Ruby 환경의 Redis 드라이버
다운받은 "Ruby 환경 Redis 드라이버 파일(redis-3.2.2.gem)을 Ruby 설치 루트 디렉터리(C:Ruby22-x64)에 복사합니다.
그런 다음 다음과 같이 설치 명령을 실행합니다.
gem install --local path_to_gem/filename.gem
Redis 클러스터 생성
다운로드한 "ruby 스크립트 파일 redis-trib.rb를 사용하여 Redis 클러스터 생성"을 Redis 설치 루트 디렉터리(D:Redis)에 복사합니다. -ClusterRedis- x64-3.2.100).
(1) redis-trib.rb를 사용하여 Redis 클러스터를 생성합니다.
MD 아래의 Redis 디렉터리로 전환합니다(D:Redis-ClusterRedis-x64-3.2.100)
D:/Redis-Cluster/Redis-x64 -3.2 .100/redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6385
D:\Redis-Cluster\Redis-x64-3.2.100>redis-trib.rb create --replicas 1 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 127.0.0.1:6385 >>> Creating cluster Connecting to node 127.0.0.1:6380: OK Connecting to node 127.0.0.1:6381: OK Connecting to node 127.0.0.1:6382: OK Connecting to node 127.0.0.1:6383: OK Connecting to node 127.0.0.1:6384: OK Connecting to node 127.0.0.1:6385: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 Adding replica 127.0.0.1:6383 to 127.0.0.1:6380 Adding replica 127.0.0.1:6384 to 127.0.0.1:6381 Adding replica 127.0.0.1:6385 to 127.0.0.1:6382 M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 slots:0-5460 (5461 slots) master M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master S: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e S: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 replicates b4d120f2983ad683f7b68992e1ba414722238db7 S: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 Can I set the above configuration? (type 'yes' to accept): yes >>> 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:6380)M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 slots:0-5460 (5461 slots) master M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master M: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 slots: (0 slots) master replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e M: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 slots: (0 slots) master replicates b4d120f2983ad683f7b68992e1ba414722238db7 M: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 slots: (0 slots) master replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
비고:
(1)--replicas #指定集群中每个主节点配备几个从节点,这里设置为1。
(2)redis-trib.rb工具的使用
、create:创建集群 、check:检查集群 、info:查看集群信息 、fix:修复集群 、reshard:在线迁移slot 、rebalance:平衡集群节点slot数量 、add-node:将新节点加入集群 、del-node:从集群中删除节点 、set-timeout:设置集群节点间心跳连接的超时时间 、call:在集群全部节点上执行命令 、import:将外部redis数据导入集群
(2)检验是否真的创建成功
输入以下命令:
redis-trib.rb check 127.0.0.1:6380
如果现实信息如下,则说明创建的Redis集群是没问题。
D:\Redis-Cluster\Redis-x64-3.2.100>redis-trib.rb check 127.0.0.1:6380 Connecting to node 127.0.0.1:6380: OK Connecting to node 127.0.0.1:6383: OK Connecting to node 127.0.0.1:6382: OK Connecting to node 127.0.0.1:6384: OK Connecting to node 127.0.0.1:6385: OK Connecting to node 127.0.0.1:6381: OK >>> Performing Cluster Check (using node 127.0.0.1:6380) M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 slots:0-5460 (5461 slots) master 1 additional replica(s) S: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 slots: (0 slots) slave replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master 1 additional replica(s) S: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 slots: (0 slots) slave replicates b4d120f2983ad683f7b68992e1ba414722238db7 S: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 slots: (0 slots) slave replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. D:\Redis-Cluster\Redis-x64-3.2.100>
(3)信息查询
使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息
原文作者:cctext
原文链接:https://www.cnblogs.com/yy3b2007com/p/11033009.html
相关推荐:redis数据库教程
위 내용은 Windows에서 Redis 클러스터를 구축하는 방법의 상세 내용입니다. 자세한 내용은 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의 대기열을 읽으려면 대기열 이름을 얻고 LPOP 명령을 사용하여 요소를 읽고 빈 큐를 처리해야합니다. 특정 단계는 다음과 같습니다. 대기열 이름 가져 오기 : "큐 :"와 같은 "대기열 : my-queue"의 접두사로 이름을 지정하십시오. LPOP 명령을 사용하십시오. 빈 대기열 처리 : 대기열이 비어 있으면 LPOP이 NIL을 반환하고 요소를 읽기 전에 대기열이 존재하는지 확인할 수 있습니다.

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

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

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

Redis 서버를 시작하는 단계에는 다음이 포함됩니다. 운영 체제에 따라 Redis 설치. Redis-Server (Linux/MacOS) 또는 Redis-Server.exe (Windows)를 통해 Redis 서비스를 시작하십시오. Redis-Cli Ping (Linux/MacOS) 또는 Redis-Cli.exe Ping (Windows) 명령을 사용하여 서비스 상태를 확인하십시오. Redis-Cli, Python 또는 Node.js와 같은 Redis 클라이언트를 사용하여 서버에 액세스하십시오.
