Redis叢集 - cluster叢集、資料分片
在前面配置了一個簡單的redis主從架構:
我們現在進入真正的叢集配置:
如果我們的資料特別大,併發壓力特別高,我們的redis主伺服器也會有很大壓力,所以我們需要多個主從,也就是叢集的架構。
在mysql裡,多個主從的架構下,我們藉助了中間價mycat
。比如,我們插入一條新聞資料,這個中間價mycat
就是通過一定演算法來決定這條新聞是插入哪一個伺服器中。
redis其實在叢集裡面也能做到這一點,我們配置好叢集之後,比如set name jack
,可以通過某種演算法來決定這個資料是進入我們哪一個redis伺服器的主節點。這就是我們所謂的redis叢集裡的一個功能——資料分片。
其實在我們實戰當中,很多時候一臺伺服器不可能承擔所有資料,我們做分散式開發,資料也要分散式儲存。
去掉主從配置
1、我們讓各個redis例項獨立執行
#註釋掉配置檔案中的
slaveof xxxxx
2、另外還需要停止哨兵(sentinel)。
3、你的redis版本必須是3.x以上。配置叢集需要至少3個主節點(每個主節點對應一個從節點,這樣一共6個節點)
叢集的關鍵配置
官方教程:
https://redis.io/topics/cluster-tutorial
建立6個節點,埠分別是6379、6380、6381、6479、6480、6481。
配置檔案中:
port必須不一樣;pidfile必須不一樣
dbfilename前面加#註釋掉
cluster-enabled yes 表示開啟叢集
cluster-config-file nodes_6379.conf 叢集模式下,每個redis節點生產一個配置檔案,由redis自己維護,檔名區分即可。
appendonly yes 開啟AOF儲存模式
appendfilename 也要區分檔名
cluster-node-timeout 10000
6379.conf:
port 6379
pidfile "/usr/local/redis/redis_6379.pid"
#dbfilename "dump6379.rdb"
appendonly yes
appendfilename "appendonly6379.aof"
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
其他幾個配置檔案也要分別做修改(注意區分不一樣的地方)
關閉rdb儲存
save ""
#save 900 1
#save 300 10
#save 60 10000
其他修改配置檔案也要分別做修改。
管理叢集
需要安裝ruby工具包
#切換到root使用者
su - root
yum -y install ruby ruby-devel rubygems rpm-build
#安裝管理redis的工具
gem install redis
安裝好後,在我們redis目錄/usr/local/redis/bin/
下多了一個檔案:
redis-trib.rb
啟動這6個例項
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6479.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6480.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6481.conf
為了簡化,我們可以把這些寫入一個shell指令碼,比如start
,然後執行這個檔案./start
就啟動6個節點了。
啟動之後,我們檢視程式:
cluster
代表各個節點已經做好準備進入叢集。如果沒有這個可能前面的配置是有錯誤的。
清空所有節點的redis資料
(在前面學習的時候增加過資料。)
資料存放在我們配置的路徑/usr/local/redis/datadir/
。
這個目錄下可能有.rdb
檔案,因為在我們前面學習中是用rdb模式儲存資料的。
我們現在把這些檔案都刪掉(因為我們是學習演示,所以直接刪除更方便)
啟動叢集
看文件:
https://redis.io/topics/cluster-tutorial
./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:6479 127.0.0.1:6480 127.0.0.1:6481
執行上面命令之後可以看到:
可以看出有3個master和3個slave。
然後我們輸入:yes
ok,我們叢集最簡單的配置已經成功啦(注意這個工具緊緊是幫我們把各個節點配置成叢集)。
可能出現的錯誤:ERR Slot xxxxxx is already busy( Redis::CommandError)
如果上一次執行出錯,則必須去datadir對應的目錄手工刪除 自動生產的cluster配置檔案
測試叢集
連結叢集的方式,需要多加一個引數
./redis-cli -h 127.0.0.1 -c -p 6379
#-c代表連結到叢集
檢視叢集資訊:
我們來新增資料,發現是存入到6380那個節點的:
我們連結上6381這個節點get
一下剛才存入的資料:
這就是叢集的基本功能。
相關文章
- Redis cluster 叢集Redis
- Redis Cluster(叢集)Redis
- redis偽叢集配置Cluster叢集模式Redis模式
- 搭建redis cluster叢集Redis
- 認識Redis叢集——Redis ClusterRedis
- Redis Cluster叢集模式部署Redis模式
- Docker Redis 5.0 叢集(cluster)搭建DockerRedis
- 玩轉Redis叢集之ClusterRedis
- redis叢集之分片叢集的原理和常用代理環境部署Redis
- 分片叢集元件元件
- 部署分片叢集
- akka-typed(7) - cluster:sharding, 叢集分片
- 【Redis】Redis Cluster-叢集故障轉移Redis
- mongodb副本叢集和分片叢集佈署MongoDB
- Redis-cluster叢集搭建部署Redis
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- MongoDB 分片叢集搭建MongoDB
- MongoDB叢集之分片MongoDB
- 搭建MongoDB分片叢集MongoDB
- mongodb 分片叢集建立分片集合MongoDB
- MongoDB分片叢集新增分片(自用)MongoDB
- 【資料庫】Redis叢集篇資料庫Redis
- Spring Boot整合Redis叢集(Cluster模式)Spring BootRedis模式
- redis cluster 叢集故障恢復操作思路Redis
- Elasticsearch高階之-叢集搭建,資料分片Elasticsearch
- redis 叢集Redis
- redis叢集Redis
- Node js 叢集(cluster)JS
- MySQL CLUSTER(叢集)系列MySql
- 搭建分散式 Redis Cluster 叢集與 Redis 入門分散式Redis
- mongodb 分片叢集設定MongoDB
- MongoDB分片叢集常用操作MongoDB
- 在滴滴雲上搭建 Redis-Cluster 叢集Redis
- Redis Cluster 叢集搭建與擴容、縮容Redis
- Redis Cluster叢集知識學習總結Redis
- redis Cluster模式叢集 多機器 docker 部署Redis模式Docker
- redis叢集 資料遷移方案Redis
- Redis資料型別, Redis主從哨兵和叢集(將資料匯入叢集) ubuntu使用Redis資料型別Ubuntu