Redis的安裝及建立節點、部署群集

java填坑路發表於2018-07-23

Redis簡介

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。

Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。

Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,應為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是, 相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單, 同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

Redis定義

redis是一個key-value儲存系統。它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set –有序集合)和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。

Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。

Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。同步對讀取操作的可擴充套件性和資料冗餘很有幫助。

Redis儲存

redis使用了兩種檔案格式:全量資料和增量請求。

全量資料格式是把記憶體中的資料寫入磁碟,便於下次讀取檔案進行載入;

增量請求檔案則是把記憶體中的資料序列化為操作請求,用於讀取檔案進行replay得到資料,序列化的操作包括SET、RPUSH、SADD、ZADD。

Redis群集

Redis 是一個開源的 key-value 儲存系統,由於出眾的效能,大部分網際網路企業都用來做伺服器端快取。Redis 在3.0版本前只支援單例項模式,雖然支援主從模式、哨兵模式部署來解決單點故障,但是現在網際網路企業動輒大幾百G的資料,可完全是沒法滿足業務的需求,所以,Redis 在 3.0 版本以後就推出了叢集模式。

Redis 叢集採用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個 slot,每個 Redis 例項負責其中一部分 slot 。叢集中的所有資訊(節點、埠、slot等),都通過節點之間定期的資料交換而更新。

Redis 客戶端可以在任意一個 Redis 例項發出請求,如果所需資料不在該例項中,通過重定向命令引導客戶端訪問所需的例項。

下面說一下 Redis 叢集搭建規劃,由於叢集至少需要6個節點(3主3從模式), 我本地也起不了那麼多虛擬機器 , 計劃是在一臺機器上模擬一個叢集, 這和生產環境的叢集搭建沒本質區別。

Redis安裝

 

建立多節點

建立例項目錄

複製執行指令碼

複製一個新 Redis 例項

cp -rf 命令是不使用別名來複制

分別修改6380 、6381、6382、6383、6384節點配置檔案

開啟所有節點服務(&是後臺執行)

登入隨便一個節點驗證 確認節點服務可以正常登陸

安裝群集需要的 ruby環境

由於 Redis 叢集需要使用 ruby 命令,所以我們需要安裝 ruby 和相關介面。

安裝rubygem redis依賴:

安裝 redis-trib.rb:

安裝完成ruby環境 執行下面命令確認是否正常

建立群集

簡單解釋一下這個命令:呼叫 ruby 命令來進行建立叢集,–replicas 1 表示主從複製比例為 1:1,即一個主節點對應一個從節點;然後,預設給我們分配好了每個主節點和對應從節點服務,以及 solt 的大小,因為在 Redis 叢集中有且僅有 16383 個 solt ,預設情況會給我們平均分配,當然你可以指定,後續的增減節點也可以重新分配。

# /usr/local/redis-cluster/bin/redis-trib.rb create –replicas 1 192.168.86.130:6379 192.168.86.130:6380 192.168.86.130:6381 192.168.86.130:6382 192.168.86.130:6383 192.168.86.130:6384

(yes)

驗證

通過客戶端命令連線上,通過叢集命令看一下狀態和節點資訊等。

歡迎工作一到五年的Java工程師朋友們加入Java架構開發:744677563

本群提供免費的學習指導 架構資料 以及免費的解答

不懂得問題都可以在本群提出來 之後還會有職業生涯規劃以及面試指導


相關文章