成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

深入了解node?中怎么使用redis集群功能【配置詳解】

node中怎么使用redis集群功能?下面本篇文章給大家詳解一下基于node的redis集群配置,希望對(duì)大家有所幫助!

深入了解node?中怎么使用redis集群功能【配置詳解】

關(guān)于nodejs中使用redis集群功能,沒有找到一篇比較完整且通俗易懂的文章,因此自己在開發(fā)調(diào)試的過程中也走了不少?gòu)澛贰?/p>

本文會(huì)詳細(xì)介紹了在本地如何搭建redis集群、在客戶端如何使用集群、在搭建過程中遇到的問題和錯(cuò)誤匯總并說明,以避免下次使用的時(shí)候再走彎路,提高開發(fā)、工作效率。

使用集群的背景是:在Redis單例模式下隨著用戶量、訪問量的提高,qps值急劇上漲??,大量的io操作導(dǎo)致某一時(shí)刻占滿cpu(100%),隨時(shí)有宕機(jī)的危險(xiǎn),同時(shí)通過批量處理redis等方式也是治標(biāo)不治本,無法突破服務(wù)器性能的瓶頸。因此使用集群方案或增加redis實(shí)例就勢(shì)在必行。

名詞解釋–集群

集群一般是指服務(wù)器集群,區(qū)別于分布式系統(tǒng),是將很多服務(wù)器集中起來一起進(jìn)行同一種服務(wù),在客戶端看來就像是只有一個(gè)服務(wù)器。集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算從而獲得很高的計(jì)算速度,也可以用多個(gè)計(jì)算機(jī)做備份,從而使得任何一個(gè)機(jī)器壞了整個(gè)系統(tǒng)還是能正常運(yùn)行。(在redis3.0之前一般使用的都是 哨兵模式,但 哨兵的配置略微復(fù)雜,并且性能和高可用性等各方面表現(xiàn)一般)

redis集群要求

由于投票容錯(cuò)機(jī)制要求超過半數(shù)節(jié)點(diǎn)認(rèn)為某個(gè)節(jié)點(diǎn)掛了該節(jié)點(diǎn)才是掛了,所以2個(gè)節(jié)點(diǎn)無法構(gòu)成集群,因此Redis集群至少需要3個(gè)節(jié)點(diǎn)。

要保證集群的高可用、需要每個(gè)節(jié)點(diǎn)都有從節(jié)點(diǎn)(也就是備份節(jié)點(diǎn)),所以Redis集群至少需要6臺(tái)服務(wù)器。 (三主三從、三存三取、高可用、可備份)

當(dāng)然,我們?cè)诒镜卣{(diào)試時(shí)不可能用這么多服務(wù)器,因此我們可以在本地模擬運(yùn)行6個(gè)redis實(shí)例,事實(shí)上生產(chǎn)環(huán)境的Redis集群搭建和這里基本上一樣。

mac 環(huán)境下搭建本地redis集群

1. 下載安裝redis

可以在官網(wǎng)選擇安裝,也可以用命名行安裝

#安裝 brew install redis #啟動(dòng) redis-server #進(jìn)入redis客戶端 redis-cli

2. 通過redis配置集群環(huán)境

首先要找到redis配置文件的位置

  • brew list redis # 查看redis安裝的位置
  • cd /opt/homebrew/Cellar/redis/6.2.4 # 根據(jù)位置進(jìn)入版本號(hào)所在的文件夾
  • open . # 打開文件夾
  • Xcode.app打開homebrew.mxcl.redis.plist, 即可找到redis.conf所在的位置,如下所示:

深入了解node?中怎么使用redis集群功能【配置詳解】

深入了解node?中怎么使用redis集群功能【配置詳解】

創(chuàng)建六個(gè)服務(wù)配置文件

cd /opt/homebrew/etc/(上一步找到的配置文件目錄)

# 需要在 /opt/homebrew/etc/ 路徑下 mkdir -p redis/cluster/7000 mkdir -p redis/cluster/7001 mkdir -p redis/cluster/7002 mkdir -p redis/cluster/7003 mkdir -p redis/cluster/7004 mkdir -p redis/cluster/7005

修改配置文件

/opt/homebrew/etc/redis.conf路徑下的配置文件不用去修改, 只要將其copy到上面創(chuàng)建的 redis/cluster/7000目錄下,然后再修改,步驟如下

  • 先復(fù)制一份配置文件修改
cd /opt/homebrew/etc/ # 進(jìn)入配置文件目錄 cp redis.conf redis/cluster/7000/7000.conf code redis/cluster/7000/7000.conf # 用編輯器打開或者用vim打開配置文件來進(jìn)行修改
  • 進(jìn)入到7000.conf后,修改以下屬性
# Redis端口號(hào)(7000-7005每個(gè)配置文件都要修改) port 7000    # 開啟集群模式運(yùn)行 cluster-enabled yes     # 集群內(nèi)部配置文件配置文件路徑,默認(rèn)nodes-6379.conf(7000-7005每個(gè)配置文件都要修改) cluster-config-file nodes-7000.conf   # 節(jié)點(diǎn)間通信的超時(shí)時(shí)間 cluster-node-timeout 5000    # 數(shù)據(jù)持久化 appendonly yes
  • 將7000.conf復(fù)制到每個(gè)redis服務(wù)的目錄下
cd /opt/homebrew/etc/redis/cluster # 進(jìn)入配置文件目錄  cp 7000/7000.conf 7001/7001.conf cp 7000/7000.conf 7002/7002.conf cp 7000/7000.conf 7003/7003.conf cp 7000/7000.conf 7004/7004.conf cp 7000/7000.conf 7005/7005.conf
  • 再修改7001.conf-7005.conf每個(gè)配置文件的port和cluster-config-file屬性

注意:每個(gè)配置文件必需配置不一樣的port和cluster-config-file值(否則集群不會(huì)生效),上面是以端口區(qū)分。

通過find /opt/homebrew -name nodes-7000.conf命令可查找到該配置文件的目錄


3. 啟動(dòng)和停止集群服務(wù)

由于我們配置了6個(gè)服務(wù),因此不可能一個(gè)一個(gè)的啟動(dòng)或停止,需要借助shell腳本來實(shí)現(xiàn)

進(jìn)入/opt/homebrew/etc/redis/cluster目錄,創(chuàng)建start.sh和stop.sh文件

# start.sh 文件 #!/bin/sh redis-server /opt/homebrew/etc/redis/cluster/7000/7000.conf & redis-server /opt/homebrew/etc/redis/cluster/7001/7001.conf & redis-server /opt/homebrew/etc/redis/cluster/7002/7002.conf & redis-server /opt/homebrew/etc/redis/cluster/7003/7003.conf & redis-server /opt/homebrew/etc/redis/cluster/7004/7004.conf & redis-server /opt/homebrew/etc/redis/cluster/7005/7005.conf &  # stop.sh 文件 #!/bin/sh redis-cli -p 7000 shutdown & redis-cli -p 7001 shutdown & redis-cli -p 7002 shutdown & redis-cli -p 7003 shutdown & redis-cli -p 7004 shutdown & redis-cli -p 7005 shutdown &

執(zhí)行./start.sh或者./stop.sh來啟停服務(wù)

執(zhí)行ps -ef |grep redis來查看已啟動(dòng)的redis服務(wù)

注意: 第一次執(zhí)行./start.sh需要通過sudo chmod +x start.sh授權(quán)執(zhí)行權(quán)限

4. 相關(guān)命令

redis-cli -p 7000 # 單個(gè)客戶端啟動(dòng) redis-server 7000/7000.conf  # 啟動(dòng)單個(gè)服務(wù)端 redis-cli -p 7000 shutdown # 關(guān)閉服務(wù)端 sudo chmod +x start.sh # 開啟腳本執(zhí)行權(quán)限  # 設(shè)置redis主從關(guān)系(三主三從) redis-cli --cluster create  --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005  cluster nodes #查看集群節(jié)點(diǎn)情況(進(jìn)入某個(gè)客戶端執(zhí)行) cluster info #查看集群信息(進(jìn)入某個(gè)客戶端執(zhí)行)  查看所有key值:keys *  刪除指定索引的值:del key  清空整個(gè) Redis 服務(wù)器的數(shù)據(jù):flushall   清空當(dāng)前庫(kù)中的所有 key:flushdb

客戶端使用 ioredis 框架接入集群

Redis.Cluster提供了在多個(gè)Redis節(jié)點(diǎn)上自動(dòng)分片的功能,使用前面搭建好的六個(gè)redis服務(wù)器,然后在本地啟動(dòng)node redis.js,就可以測(cè)試集群的效果了。ioredis

// redis.js const Redis = require("ioredis");  const cluster = new Redis.Cluster([   {     port: 7000,     host: "127.0.0.1",   },   {     port: 7001,     host: "127.0.0.1",   }, ]);  cluster.set("foo", "bar"); cluster.get("foo", (err, res) => {   // res === 'bar' });

使用bull框架(redis 隊(duì)列)

import Queue from 'bull' // 創(chuàng)建redis隊(duì)列實(shí)例 const instance = new Queue('custom', {   prefix : '{myprefix}',   createClient(type) {     // cluster 集群實(shí)例同上     return cluster   } })  // 添加數(shù)據(jù)到redis隊(duì)列(生產(chǎn)者) instance.add(   'request',    {      ...params   },   {     removeOnComplete: false   } ).catch(e => {   console.error(e) })  // 消費(fèi)者回調(diào) instance.process('request', 5, async (job, done) => {   console.log('獲取當(dāng)前消費(fèi)的數(shù)據(jù):', job.data)   // 執(zhí)行異步操作   await new Promise((resolve)=>resolve())   done() })

使用bull框架連接ioredis集群時(shí)存在問題: 每次有數(shù)據(jù)pushredis隊(duì)列時(shí)對(duì)應(yīng)的回調(diào)函數(shù)可能會(huì)觸發(fā)多次,目前無法確定是使用的問題還是框架本身的問題(如果有了解的歡迎大家留言告知)。

替代集群的方案:在不需要數(shù)據(jù)同步和數(shù)據(jù)遷移的情況下,可以在客戶端使用多個(gè)redis實(shí)例,結(jié)合Math.random()使數(shù)據(jù)平分到其中的一個(gè)redis,從而解決了單個(gè)實(shí)例硬件(cpu等)瓶頸的問題。

問題處理

1、Mac系統(tǒng)下連接redis報(bào)錯(cuò)?

控制臺(tái)錯(cuò)誤提示:Could not connect to Redis at 127.0.0.1:6379: Connection refused

原因:服務(wù)端沒有開啟或啟動(dòng)失敗

解決辦法:需要先啟動(dòng)redis服務(wù)端redis-server

參考鏈接

https://blog.csdn.net/qq_23347459/article/details/104257529

2、客戶端啟動(dòng)、讀寫報(bào)錯(cuò)?

錯(cuò)誤提示:ClusterAllFailedError: Failed to refresh slots cache.

原因:每個(gè)服務(wù)下的配置文件中的cluster-config-file屬性一致。

處理:修改成唯一的屬性值

  • 參考鏈接1

    https://stackoverflow.com/questions/57350961/ioredis-clusterallfailederror-failed-to-refresh-slots-cache

  • 參考2

    https://github.com/luin/ioredis/issues/711

3、執(zhí)行創(chuàng)建主從redis語(yǔ)句失敗?

執(zhí)行語(yǔ)句:redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

提示錯(cuò)誤:[ERR] Node 127.0.0.1:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

原因:執(zhí)行創(chuàng)建語(yǔ)句時(shí),沒有清空數(shù)據(jù)和重置集群

處理:清空數(shù)據(jù)和重置集群, 清除rdb和aof文件

參考清除redis數(shù)據(jù)

https://stackoverflow.com/questions/37206993/redis-server-cluster-not-working

# 以7000端口的服務(wù)為例,7001-7005重復(fù)以下操作 $redis-cli -p 7000 127.0.0.1:7000> flushall 127.0.0.1:7000> cluster reset 127.0.0.1:7000> exit  # 使用find找到rdb和aof文件(也在rdb目錄下) find /opt/homebrew -name dump.rdb  # 重新執(zhí)行創(chuàng)建語(yǔ)句成功 redis-cli --cluster create  --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

結(jié)語(yǔ)

redis集群在客戶端的使用是非常簡(jiǎn)單的,相比之下服務(wù)端的配置會(huì)比較繁瑣。

客戶端的具體使用只做了一下簡(jiǎn)單的說明,使用過程中要注意redis數(shù)據(jù)的同步和遷移等問題。

使用集群雖然能提升服務(wù)能力、支持主從復(fù)制、哨兵模式、讀寫分離、平分服務(wù)器的壓力等特點(diǎn)。但不具備自動(dòng)容錯(cuò)和恢復(fù)功能,如果出現(xiàn)宕機(jī)會(huì)使部分讀寫請(qǐng)求失敗,降低了系統(tǒng)的可用性。在使用時(shí)根據(jù)業(yè)務(wù)情況分析、選擇不同的方案。

本文轉(zhuǎn)載自:https://juejin.cn/post/7079928963107127327

作者:tager

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
国产精品人成视频免费播放| 国产精品久久久影视青草| 欧洲老太太BBBH| 正在播放老肥熟妇露脸| 精品视频国产香蕉尹人视频| 亚洲 欧美 中文 日韩AⅤ手机| 国产激情一区二区三区小说 | 国产亚洲精品第一综合另类灬 | 裸睡时一自慰不小心就滑进去啦 | 三级韩国2017在线观看| 成 人 黄 色 网 站 视 频| 人妻无码一区二区19P| WWW国产亚洲精品久久麻豆| 欧美三级三级三级爽爽爽| A级毛片无码免费真人久久| 免费无码又爽又刺激高潮软件| 在图书馆揉捏她的双乳| 美女高潮流白浆娇喘免费网站 | 公与憩止痒小说400章| 少妇人妻好深太紧了A| 成人片黄网站A毛片免费| 日韩乱码人妻无码超清蜜桃丨 | 影音先锋亚洲亚洲色图| 乱人伦人妻中文字幕不卡| 最新国产毛2卡3卡4卡| 浓精喷进老师黑色丝袜| 97久久精品午夜一区二区| 欧美成人少妇人妻精品视频| JIZZJIZZJIZZ日本丰| 人妻少妇精品专区性色AV| 波多野结衣AV高清一区二区三区| 日韩成人无码AV| 高H闺蜜老公1V1| 无码AV蜜臀AⅤ色欲在线观看| 国产精品无码成人午夜电影| 亚洲 中文 欧美 日韩 在线| 精产国品一二三产区区别在哪儿 | 欧洲熟妇色XXXX欧美老妇多毛| XXX.WWW免费观看视频| 日日噜噜夜夜狠狠VA视频| 国产成人无码AⅤ片在线观看视频| 无码熟妇人妻AV| 黑人巨茎大战欧美白妇| 亚洲午夜性春猛交77777| 美女直播全婐网站免费高清| JAPONENSIS性护士| 少妇高潮喷水久久久久久久久久| 国产精品欧美福利久久| 亚洲国产精品一区二区久久| 巨胸美乳无码人妻在线| AV无码精品一区二区三区宅噜噜| 日韩乱码人妻无码超清蜜桃 | 99久久99久久免费精品小说| 日本一线和三线的区别是什么| 国产成人精品一区二区视频| 亚洲AV无码成人精品区在线播放| 久久AⅤ无码AV高潮AV喷吹| 中文字日产幕码三区做法| 人人澡人摸人人添| 国产精品久久久久蜜芽| 亚洲另类无码专区首页| 母亲とが话していま在线观看| 啊灬啊灬啊灬高潮了视频 | 巨爆乳无码视频在线观看| 99国产精品自在自在久久| 色又黄又爽18禁免费网站现观看 | XXXAV久久久久久久久久久| 日韩乱码人妻无码超清蜜桃| 国产午夜福利亚洲第一| 又湿又紧又大又爽A视频| 欧洲熟妇色XXXXⅩ| 国产精品秘入口18禁麻豆免会员| 亚洲色欲一区二区三区在线观看 | 国产又色又爽又黄的网站在线| 亚洲色成人中文字幕网站| 免费网站看V片在线18禁无码| 成片人卡1卡2卡3手机免费看| 五月综合激情婷婷六月色窝| 久久久受WWW免费人成| 暗呦交小U女国产精品视频| 无码人妻一区二区三区免费AV| 久久精品国产久精国产思思| XXXAV久久久久久久久久久| 午夜无码性爽快影院6080| 浪潮AV激情高潮国产精品| 刺激的乱亲小说43部分阅读 | А√ 天堂 在线官网中文| 婷婷综合久久狠狠色成人网| 久久久久国色AV∨免费看| 白嫩少妇激情无码| 亚洲AV永久无码精品主页| 女人大胆张开荫道口∞| 国产69精品久久久久9999A| 亚洲一区二区自偷自拍另类| 日产乱码一二三区别免费看 | 97SE亚洲国产综合自在线不卡 | 影音先锋亚洲亚洲色图| 色综合天天综合网国产成人网| 好爽…又高潮了毛片喷水| 2020久久天天躁狠狠躁夜夜| 无码H片在线观看网站| 久精品夜色国产亚洲AV| JIZZ中国女人奶水多| 亚洲AⅤ熟女高潮30P| 女性自慰网站免费观看W| 国产精品亲子乱子伦XXXX裸| 张柏芝性XXXXXⅩ| 玩弄JAPAN白嫩少妇HD| 老少交TNBE少老配| 国产XXXX99真实实拍| 一炕四女被窝交换啪啪| 少妇厨房愉情理伦BD在线观看| 久久久精品波多野结衣AV| 高清一区二区三区免费视频| 永久免费AV无码不卡在线观看| 少妇仑乱A毛片无码| 老男人久久青草AV高清| 国产成人综合久久久久久| 做I爱直播APP| 亚洲AV无码乱码精品国产| 欧美丰满熟妇乱XXXXX流白浆| 国产性天天综合网| 696969C大但人文艺术作品 | 日本熟妇人妻ⅩXXXX| 久久久97精品国产一区蜜桃| 国产A1A2A3| 中文字幕无码视频手机免费看| 无码中文AV波多野吉衣迅雷下载| 欧美肥胖老太大喷水| 狠色狠色狠狠色综合久久| 大桥久未无码吹潮在线观看| 在公车被灌满JING液| 无人区码二码三码四码区别| 欧美一区二区三放荡人妇| 久久99精品久久久久久久清纯| 国产Chinese男男GayGay网站| 4HU四虎永久在线影院| 亚洲国产精品VA在线播放| 日木AV无码专区亚洲AV毛片| 久久久久久国产精品免费免费男同 | 女的被弄到高潮娇喘喷水视频| 国产女人喷潮视频免费| 白丝制服被啪到喷水很黄很暴力 | 青青青国产手线观看视频2019| 精品人妻一区二区三区四区在线| 国产92成人精品视频免费| 97夜夜澡人人爽人人| 亚洲欧美日韩国产成人精品影院| 少妇高潮喷潮久久久影院| 欧美 狠狠操 888| 极品美女扒开粉嫩小泬的视频| 丁香五月缴情网站| 中文字幕亚洲乱码熟女1区2区| 亚洲AV中文无码乱人伦在线播放| 上边一面亲下边一面膜的注意事项| 男生女生一起相差差差差| 久久本道综合久久伊人| 国产精品日日摸夜夜添夜夜添| 99久久99久久免费精品蜜桃| 一本久久伊人热热精品中文| 亚洲AV成人综合网久久成人| 熟悉妇人妻av无码毛片| 啪啪叉叉xx高清无码| 久久久久女人精品毛片| 国精一二二产品无人区免费应用| 大地韩国日本HD免费完整| 69风韵老熟女口爆吞精| 亚洲色成人四虎在线观看| 小洞饿了想吃大香肠| 色婷婷狠狠久久综合五月| 欧美熟妇精品一区二区三区| 久久综合久久鬼色| 激情综合婷婷丁香五月情 | 一本无码字幕在钱少妇人妻| 亚洲AV无码成人影片在线观看| 天干天干天啪啪夜爽爽色| 日本适合十八岁以上的护肤品一| 男人扒开女人的腿做爽爽视频 | 色欲AV蜜臀AV一区在线| 全棵女性艺术写真素材| 男女啪啪免费观看网站| 看全色黄大色大片免费久久| 精品日产一区二区三区| 国产亚洲色欲色一色WWW| 国产成人涩涩涩视频在线观看| 大陆熟妇丰满多毛XXXX| 扒开校花的粉嫩小泬| FREESEX性中国熟妇| 最新国产AⅤ精品无码| 永久免费AV网站| 亚洲色帝国综合婷婷久久| 亚洲AV永久综合在线观看尤物| 无码毛片视频一区二区三区| 天无日天天射天天视| 日本乱熟人妻精品乱码涩爱| 欧美噜噜久久久XXX| 男女啪啪激烈高潮喷出GIF免费| 猫咪成人网站WWW永久网站| 久久WWW免费人成_看片| 国精产品一线二线三线|