redis集群建立新手教程
redis集群建立
(學習影片分享:redis影片教學)
- 下載redis壓縮包,然後解壓縮壓縮檔;
- 進入到解壓縮後的redis檔目錄(此時可以看到Makefile檔),編譯redis原始檔;
- 把編譯好的redis原始檔安裝到/usr/local/redis目錄下,如果/local目錄下沒有redis目錄,會自動新建redis目錄;
- 進入/usr/local/ redis/bin目錄,直接./redis-server啟動redis(此時為前端啟動redis);
- 將redis啟動方式改為後端啟動,具體做法:把解壓縮的redis檔案下的redis .conf檔複製到/usr/local/redis/bin目錄下,然後修改該redis.conf檔->daemonize:no 改為daemonize:yse;
- 在/bin目錄下透過./redis -server redis.conf啟動redis(此時為背景啟動)。
- 綜上redis單機版安裝啟動完成。
具體詳細帶圖步驟請參考 -> redis入門
請原諒我的囉嗦,ok,接著咱們回到本次話題----redis集群搭建!
一、Redis Cluster(Redis叢集)簡介
- redis是一個開源的key value儲存系統,受到了廣大互聯網公司的青睞。 redis3.0版本之前只支援單例模式,在3.0版本及以後才支援集群,我這裡用的是redis3.0.0版本;
- redis集群採用P2P模式,是完全去中心化的,不存在中心節點或代理節點;
- redis集群是沒有統一的入口的,客戶端(client)連接集群的時候連接集群中的任意節點(node)即可,集群內部的節點是相互通信的(PING-PONG機制),每個節點都是一個redis實例;
- 為了實現叢集的高可用,即判斷節點是否健康(能否正常使用),redis-cluster有這麼一個投票容錯機制:如果叢集中超過一半的節點投票認為某個節點掛了,那麼這個節點就掛了(fail)。這是判斷節點是否掛了的方法;
- 那麼如何判斷叢集是否掛了呢? -> 如果叢集中任意一個節點掛了,而且該節點沒有從節點(備份節點),那麼這個集群就掛了。這是判斷叢集是否掛了的方法;
- 那麼為什麼任意一個節點掛了(沒有從節點)這個叢集就掛了呢? -> 因為集群內置了16384個slot(哈希槽),並且把所有的物理節點映射到了這16384[0-16383]個slot上,或者說把這些slot均等的分配給了各個節點。當需要在Redis叢集存放一個資料(key-value)時,redis會先對這個key進行crc16演算法,然後得到一個結果。再把這個結果對16384進行求餘,這個餘數會對應[0-16383]其中一個槽,進而決定key-value儲存到哪個節點中。所以一旦某個節點掛了,該節點對應的slot就無法使用,那麼就會導致叢集無法正常運作。
- 綜上所述,每個Redis集群理論上最多可以有16384個節點。
二、叢集搭建所需的環境 2.1 Redis叢集至少需要3個節點,因為投票容錯機制要求超過半數節點認為某個節點掛了該節點才是掛了,所以2個節點無法構成叢集。
2.2 要確保叢集的高可用,需要每個節點都有從節點,也就是備份節點,所以Redis叢集至少需要6台伺服器。因為我沒有那麼多伺服器,也啟動不了那麼多虛擬機,所在這裡搭建的是偽分佈式集群,即一台伺服器虛擬運行6個redis實例,修改端口號為(7001-7006),當然實際生產環境的Redis集群搭建和這裡是一樣的。
2.3 安裝ruby
三、叢集搭建特定步驟如下(注意關閉防火牆) 3.1 在usr/local目錄下新建redis-cluster目錄,用於存放叢集節點 3.2 把redis目錄下的bin目錄下的所有檔案複製到/usr/local/redis-cluster/redis01目錄下,不用擔心這裡沒有redis01目錄,會自動建立的。操作命令如下(注意目前所在路徑):
cp -r redis/bin/ redis-cluster/redis01
3.3 刪除redis01目錄下的快照文件dump.rdb,並且修改該目錄下的redis.cnf文件,具體修改兩處地方:一是端口號修改為7001,二是開啟集群建立模式,開啟註解即可。分別如下圖所示:
刪除dump.rdb檔
修改埠號為7001,預設是6379
將cluster-enabled yes 的註解開啟
3.4 將redis-cluster/redis01檔案複製5份到redis-cluster目錄下(redis02-redis06),建立6個redis實例,模擬Redis叢集的6個節點。然後將其餘5個檔案下的redis.conf裡面的連接埠號碼分別修改為7002-7006。分別如下圖所示:
建立redis02-06目錄
#分別修改redis.conf檔案埠號為7002-7006
# 3.5 接著啟動所有redis節點,由於一個一個啟動太麻煩了,所以在這裡創建一個批量啟動redis節點的腳本文件,命令為start-all.sh,文件內容如下:
cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd ..
3.6 創建好啟動腳本文件之後,需要修改該腳本的權限,使之能夠執行,指令如下:
chmod +x start-all.sh
#3.7 執行start-all.sh腳本,啟動6個redis節點
3.8 ok,至此6個redis節點啟動成功,接下來正式開啟搭建集群,以上都是準備條件。大家不要覺得圖片多看起來冗長所以覺得麻煩,其實以上步驟也就一句話的事情:創建6個redis實例(6個節點)並啟動。
要搭建叢集的話,需要使用一個工具(腳本檔案),這個工具在redis解壓縮檔案的原始程式碼裡。因為這個工具是ruby腳本文件,所以這個工具的運作需要ruby的運行環境,就等於java語言的運作需要在jvm上。所以需要安裝ruby,指令如下:
yum install ruby
然後需要把ruby相關的套件安裝到伺服器,我這裡用的是redis-3.0.0.gem,大家需要注意的是:redis的版本和ruby包的版本最好保持一致。
將Ruby套件安裝到伺服器:需要先下載再安裝,如圖
# 安裝指令如下:
gem install redis-3.0.0.gem
3.9 上一步已經把ruby工具所需的運作環境和ruby套件安裝好了,接下來需要把這個ruby腳本工具複製到usr/local/redis-cluster目錄下。那麼這個ruby腳本工具在哪裡呢?之前提到過,在redis解壓縮檔的源碼裡,即redis/src目錄下的redis-trib.rb檔。
3.10 將該ruby工具(redis-trib.rb)複製到redis-cluster目錄下,指令如下:
cp redis-trib.rb /usr/local/redis-cluster
然後使用該腳本文件建立集群,指令如下:
./redis-trib.rb create --replicas 1 47.106.219.251:7001 47.106.219.251:7002 47.106.219.251:7003 47.106.219.251:7004 47.106.219.251:7005 47.106.219.251:7006
注意:此處大家應該根據自己的伺服器ip輸入對應的ip位址!
中途有個地方需要手動輸入yes即可
至此,Redi叢集建立成功!大家注意最後一段文字,顯示了每個節點所分配的slots(哈希槽),這裡總共6個節點,其中3個是從節點,所以3個主節點分別映射了0-5460、5461-10922、 10933-16383solts。
3.11 最後連接叢集節點,連接任一即可:
redis01/redis-cli -p 7001 -c
注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的:
四、结语
呼~~~长舒一口气…终于搭建好了Redis集群。
整个过程其实挺简单,本篇主要正对入门级别的小伙伴,插入了很多图片,所以显得冗长,希望大家多多理解,如果不当之处,还望及时指正~
最后,加上两条redis集群基本命令:
1.查看当前集群信息
cluster info
2.查看集群里有多少个节点
cluster nodes
相关推荐:redis数据库教程
以上是redis集群建立新手教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

Redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。 Redis 通過快照 (RDB) 和追加只寫 (AOF) 機制持久化數據。 Redis 使用主從復制來提高數據可用性。 Redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。 Redis 為鍵設置過期時間,並使用 lazy 刪除機制刪除過期鍵。

解決redis-server找不到問題的步驟:檢查安裝,確保已正確安裝Redis;設置環境變量REDIS_HOST和REDIS_PORT;啟動Redis服務器redis-server;檢查服務器是否運行redis-cli ping。

理解 Redis 源碼的最佳方法是逐步進行:熟悉 Redis 基礎知識。選擇一個特定的模塊或功能作為起點。從模塊或功能的入口點開始,逐行查看代碼。通過函數調用鏈查看代碼。熟悉 Redis 使用的底層數據結構。識別 Redis 使用的算法。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

要查看 Redis 中的所有鍵,共有三種方法:使用 KEYS 命令返回所有匹配指定模式的鍵;使用 SCAN 命令迭代鍵並返回一組鍵;使用 INFO 命令獲取鍵的總數。

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。
