柚子快報激活碼778899分享:Nosql數(shù)據(jù)庫Redis集群
柚子快報激活碼778899分享:Nosql數(shù)據(jù)庫Redis集群
一、Nosql
1.1、概念
首先數(shù)據(jù)庫分為兩種,即關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫(也就是Nosql)。
NoSQL數(shù)據(jù)庫,即非關(guān)系型數(shù)據(jù)庫,提供了一種不同于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)存儲與管理方式。其特點包括靈活的數(shù)據(jù)模型、高可擴展性、高性能以及適用于大數(shù)據(jù)處理等。這些特性使NoSQL數(shù)據(jù)庫在現(xiàn)代應(yīng)用程序中越來越受歡迎,特別是在需要處理大規(guī)模、半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)的場景中。
1.2、分類
主要分為臨時性鍵 值存儲(memcached、Redis)、永久性鍵值存儲(ROMA、Redis)、面向文檔的數(shù)據(jù)庫 (MongoDB、CouchDB)、面向列的數(shù)據(jù)庫(Cassandra、HBase)。
二、redis
2.1、概念
Redis(Remote Dictionary Server)是一個開源的內(nèi)存數(shù)據(jù)庫,使用ANSI C編寫,遵守BSD協(xié)議。它主要用作鍵值存儲系統(tǒng)、緩存、消息隊列和會話存儲等。
2.2、特性
速度快: 10W QPS,基于內(nèi)存,C語言實現(xiàn)單線程持久化支持多種數(shù)據(jù)結(jié)構(gòu)支持多種編程語言功能豐富: 支持Lua腳本,發(fā)布訂閱,事務(wù),pipeline等功能簡單: 代碼短小精悍(單機核心代碼只有23000行左右),單線程開發(fā)容易,不依賴外部庫,使用簡單主從復(fù)制支持高可用和分布式
?2.2.1、單線程優(yōu)勢
純內(nèi)存非阻塞避免線程切換和競態(tài)消耗
2.3、搭建
?官方下載地址:Index of /releases/
2.3.1、編譯搭建
首先部署三臺主機
在node1中解壓并安裝編譯包
dnf install make gcc initscripts-10.11.6 1.el9.x86_64 -y
執(zhí)行編譯
接著make && make install
啟動redis
然后會報錯,接著前往 vim install_server.sh
對應(yīng)位置注釋掉
可以/system慢慢找,接著再次執(zhí)行,一路enter
接著啟動
2.3.2、配置redis
vim /etc/redis/6379.conf
防止找不到路徑
/etc/init.d/redis_6379 restart 重啟服務(wù)
接著端口查看
2.4、主從復(fù)制
2.4.1、環(huán)境
ip和nat網(wǎng)卡
在三臺主機中vim /etc/redis/6379.conf
在node2,3中
2.4.2、測試
在主節(jié)點中node1中
在slave中node2,3
2.5、哨兵(redis高可用)
2.5.1、概念
哨兵通過監(jiān)控主從節(jié)點的運行狀態(tài),并在主節(jié)點故障時自動進行故障轉(zhuǎn)移,確保服務(wù)的連續(xù)性和穩(wěn)定性的一種機制。這種機制是一種分布式系統(tǒng),用于對主從結(jié)構(gòu)中的每臺服務(wù)器進行監(jiān)控。當(dāng)主節(jié)點出現(xiàn)故障時,哨兵會自動選擇一個從節(jié)點提升為主節(jié)點,并通知其他從節(jié)點和客戶端更新配置。在上述的主從復(fù)制的步驟上大大優(yōu)化,不需要人工干預(yù)。
2.5.2、實驗過程
2.5.2.1、master節(jié)點
首先在master節(jié)點也就是node1上
更改以下設(shè)置(相隔太遠(yuǎn)就不拍了)
pidfile /var/run/redis-sentinel.pid
sentinel monitor mymaster 172.25.254.10 6379 2
sentinel down-after-milliseconds mymaster 10000
將文件復(fù)制到另外兩臺主機上
redis-sentinel /etc/redis/sentinel.conf 啟動
2.5.2.2、測試
再開一臺master節(jié)點的主機
2.6、Redis cluster
2.6.1、概念
在哨兵sentinel機制中,可以解決redis高可用問題,即當(dāng)master故障后可以自動將slave提升為master, 從而可以保證redis服務(wù)的正常使用,但是無法解決redis單機寫入的瓶頸問題,即單機redis寫入性能受 限于單機的內(nèi)存大小、并發(fā)數(shù)量、網(wǎng)卡速率等因素。redis 3.0版本之后推出了無中心架構(gòu)的redis cluster機制,在無中心的redis集群當(dāng)中,其每個節(jié)點保存 當(dāng)前節(jié)點數(shù)據(jù)和整個集群狀態(tài),每個節(jié)點都和其他所有節(jié)點連接。
2.6.2、實驗過程
2.6.2.1、安裝
為了方便就不源碼編譯了,直接yum
在原本三臺主機的基礎(chǔ)上再次部署三臺主機(這里用的如果是mobashell可開啟多執(zhí)行模式,xshell還沒搞清)
IP分別設(shè)置為172.25.254.110/120/130
為了配置統(tǒng)一,先將前三臺node1,2,3的redis代碼配置刪掉
之后全部進行
Yum install redis -y
yum安裝編譯后修改配置文件
2.6.2.2、更改參數(shù)
在node1中
vim /etc/redis/redis.conf
檢測發(fā)現(xiàn)6379已經(jīng)打開了
將配置文件發(fā)往其他主機
成功后,在其他主機執(zhí)行systemctl enable --now redis
2.6.3、創(chuàng)建redis cluster
接著在node1中創(chuàng)建集群
接著詢問你是否進行配置選擇yes
進行檢測
這里提示5798超過了node1的范圍,上圖顯示是0-5461
所以得去node2中寫
Node1,2,3是一個哈希層,數(shù)據(jù)分別存儲到它們?nèi)_master主機中,而slave的作用是master或者說哈希層出現(xiàn)問題后,才會把數(shù)據(jù)存儲到slave節(jié)點中。
2.6.4、集群擴容
再開兩臺主機
IP分別設(shè)置為172.25.254.50/150
首先下載redis包
Yum install redis -y
同時再把前面的幾臺主機的配置文件復(fù)制過去
然后再在新建兩臺主機打開redis服務(wù)
Systemctl start redis
通過以下命令進行添加master
redis-cli -a 123456 --cluster add-node 172.25.254.50:6379?172.25.254.20:6379
這里可以看到添加成功
接著重新分享槽位
這里16384分享給四個槽位所以/4
因為50沒有,所以是50的id,id在check檢測那一步可以看,然后選擇所有人給他分配
每人都勻一點給他
接著會問你是否分配,yes就可以了
redis-cli -a 123456 --cluster check 172.25.254.10:6379
這里檢測可以看到已經(jīng)有槽位了
接著添加slava150
redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.20:6379 --cluster-slave --cluster-master-id ef434540246ffaef763e4275756c062b7a387993
接著檢測redis-cli -a 123456 --cluster check 172.25.254.20:6379
可以看到已經(jīng)添加進去了,同時150變成了50的slave
2.6.5、如何刪除節(jié)點
2.6.5.1、首先刪除slave
redis-cli -a 123456 --cluster del-node 172.25.254.150:6379 54a1810c38c8ddf0bf677d37b682ac645a9c922b
后面跟得是id
檢測:可以看到已經(jīng)沒有150了
2.6.5.2、刪除master
因為分配過槽位,有數(shù)據(jù),不能直接刪除,得先清除數(shù)據(jù)。
重新分配槽位
redis-cli -a 123456 --cluster reshard 172.25.254.20:6379
將50的分配給130
這里可以看到50上沒有數(shù)據(jù),所以可以進行刪除
柚子快報激活碼778899分享:Nosql數(shù)據(jù)庫Redis集群
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。