gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

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

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

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

關于nodejs中使用redis集群功能,沒有找到一篇比較完整且通俗易懂的文章,因此自己在開發調試的過程中也走了不少彎路。

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

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

名詞解釋–集群

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

redis集群要求

由于投票容錯機制要求超過半數節點認為某個節點掛了該節點才是掛了,所以2個節點無法構成集群,因此Redis集群至少需要3個節點。

要保證集群的高可用、需要每個節點都有從節點(也就是備份節點),所以Redis集群至少需要6臺服務器。 (三主三從、三存三取、高可用、可備份)

當然,我們在本地調試時不可能用這么多服務器,因此我們可以在本地模擬運行6個redis實例,事實上生產環境的Redis集群搭建和這里基本上一樣。

mac 環境下搭建本地redis集群

1. 下載安裝redis

可以在官網選擇安裝,也可以用命名行安裝

#安裝 brew install redis #啟動 redis-server #進入redis客戶端 redis-cli

2. 通過redis配置集群環境

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

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

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

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

創建六個服務配置文件

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到上面創建的 redis/cluster/7000目錄下,然后再修改,步驟如下

  • 先復制一份配置文件修改
cd /opt/homebrew/etc/ # 進入配置文件目錄 cp redis.conf redis/cluster/7000/7000.conf code redis/cluster/7000/7000.conf # 用編輯器打開或者用vim打開配置文件來進行修改
  • 進入到7000.conf后,修改以下屬性
# Redis端口號(7000-7005每個配置文件都要修改) port 7000    # 開啟集群模式運行 cluster-enabled yes     # 集群內部配置文件配置文件路徑,默認nodes-6379.conf(7000-7005每個配置文件都要修改) cluster-config-file nodes-7000.conf   # 節點間通信的超時時間 cluster-node-timeout 5000    # 數據持久化 appendonly yes
  • 將7000.conf復制到每個redis服務的目錄下
cd /opt/homebrew/etc/redis/cluster # 進入配置文件目錄  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每個配置文件的port和cluster-config-file屬性

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

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


3. 啟動和停止集群服務

由于我們配置了6個服務,因此不可能一個一個的啟動或停止,需要借助shell腳本來實現

進入/opt/homebrew/etc/redis/cluster目錄,創建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 &

執行./start.sh或者./stop.sh來啟停服務

執行ps -ef |grep redis來查看已啟動的redis服務

注意: 第一次執行./start.sh需要通過sudo chmod +x start.sh授權執行權限

4. 相關命令

redis-cli -p 7000 # 單個客戶端啟動 redis-server 7000/7000.conf  # 啟動單個服務端 redis-cli -p 7000 shutdown # 關閉服務端 sudo chmod +x start.sh # 開啟腳本執行權限  # 設置redis主從關系(三主三從) 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 #查看集群節點情況(進入某個客戶端執行) cluster info #查看集群信息(進入某個客戶端執行)  查看所有key值:keys *  刪除指定索引的值:del key  清空整個 Redis 服務器的數據:flushall   清空當前庫中的所有 key:flushdb

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

Redis.Cluster提供了在多個Redis節點上自動分片的功能,使用前面搭建好的六個redis服務器,然后在本地啟動node redis.js,就可以測試集群的效果了。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 隊列)

import Queue from 'bull' // 創建redis隊列實例 const instance = new Queue('custom', {   prefix : '{myprefix}',   createClient(type) {     // cluster 集群實例同上     return cluster   } })  // 添加數據到redis隊列(生產者) instance.add(   'request',    {      ...params   },   {     removeOnComplete: false   } ).catch(e => {   console.error(e) })  // 消費者回調 instance.process('request', 5, async (job, done) => {   console.log('獲取當前消費的數據:', job.data)   // 執行異步操作   await new Promise((resolve)=>resolve())   done() })

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

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

問題處理

1、Mac系統下連接redis報錯?

控制臺錯誤提示:Could not connect to Redis at 127.0.0.1:6379: Connection refused

原因:服務端沒有開啟或啟動失敗

解決辦法:需要先啟動redis服務端redis-server

參考鏈接

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

2、客戶端啟動、讀寫報錯?

錯誤提示:ClusterAllFailedError: Failed to refresh slots cache.

原因:每個服務下的配置文件中的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、執行創建主從redis語句失敗?

執行語句: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

提示錯誤:[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

原因:執行創建語句時,沒有清空數據和重置集群

處理:清空數據和重置集群, 清除rdb和aof文件

參考清除redis數據

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

# 以7000端口的服務為例,7001-7005重復以下操作 $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  # 重新執行創建語句成功 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

結語

redis集群在客戶端的使用是非常簡單的,相比之下服務端的配置會比較繁瑣。

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

使用集群雖然能提升服務能力、支持主從復制、哨兵模式、讀寫分離、平分服務器的壓力等特點。但不具備自動容錯和恢復功能,如果出現宕機會使部分讀寫請求失敗,降低了系統的可用性。在使用時根據業務情況分析、選擇不同的方案。

本文轉載自:https://juejin.cn/post/7079928963107127327

作者:tager

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
国产l精品国产亚洲区久久| 乱子伦视频在线看| 天天干天天操天天玩| 奇米精品一区二区三区| 欧美一级特黄aaaaaa在线看片| 成年人视频在线免费| 欧美 日韩 激情| 日本福利视频在线| 欧美在线一区视频| 欧美一级在线看| 久久精品免费网站| 潘金莲激情呻吟欲求不满视频| 亚洲少妇久久久| 亚洲日本黄色片| 亚洲天堂第一区| 超级碰在线观看| 免费观看美女裸体网站| 精品人妻一区二区三区四区在线| 91黄色小网站| 午夜免费福利视频在线观看| 波多野结衣在线免费观看| 一本—道久久a久久精品蜜桃| 中文字幕av导航| 国产高清www| 蜜臀视频一区二区三区| 亚洲精品免费一区亚洲精品免费精品一区| www.亚洲高清| 日本xxxxx18| 99蜜桃臀久久久欧美精品网站| 91看片就是不一样| 香蕉视频xxxx| 91传媒久久久| 男人添女人下面免费视频| 无码人妻aⅴ一区二区三区日本| 人人妻人人澡人人爽欧美一区双| 国产91对白刺激露脸在线观看| 爱豆国产剧免费观看大全剧苏畅| 一二三四中文字幕| 成人免费xxxxx在线视频| 奇米777在线| 日韩欧美在线免费观看视频| 黄色网zhan| 992kp快乐看片永久免费网址| 久久国产精品免费观看| 日韩视频在线免费看| 中文字幕精品在线播放| 一区二区三区国产免费| 免费网站在线观看视频| 亚洲一级片网站| 精品久久久久av| 无码人妻少妇伦在线电影| 一本一道久久a久久综合蜜桃| www.射射射| 一级特黄妇女高潮| 手机版av在线| 9l视频白拍9色9l视频| 真人抽搐一进一出视频| 300部国产真实乱| 午夜两性免费视频| 无需播放器的av| 国产精品无码一本二本三本色| 亚洲爆乳无码精品aaa片蜜桃| www.成人黄色| 在线免费观看av网| 天天色天天干天天色| 午夜啪啪小视频| 国产欧美一区二| 亚洲AV无码成人精品一区| www.色欧美| 一级一片免费播放| 蜜桃网站在线观看| 国产一二三四区在线观看| 神马午夜伦理影院| 欧美亚洲黄色片| 日本免费不卡一区二区| 能在线观看的av| 高清一区二区视频| 欧美国产在线一区| 亚洲国产精品无码观看久久| 成人在线国产视频| 欧在线一二三四区| 亚洲精品免费一区亚洲精品免费精品一区 | 男人用嘴添女人下身免费视频| 国产一二三四五| 日本丰满少妇xxxx| 国产乱子夫妻xx黑人xyx真爽| 国产91对白刺激露脸在线观看| 999精品视频在线| 一区二区三区一级片| 久久久久久久香蕉| 国产无套内射久久久国产| 麻豆一区二区三区视频| 一本二本三本亚洲码| 日韩xxxx视频| 天天综合网久久| 欧美精品一区二区三区三州| 久久久久免费精品| 超碰超碰超碰超碰超碰| 国产男女在线观看| 国产精品久久久久久9999| 国产毛片久久久久久国产毛片| 国产成人精品视频免费看| 免费精品99久久国产综合精品应用| 91亚洲一区二区| 日韩avxxx| 男人的天堂avav| 日本中文字幕观看| 男女av免费观看| 好吊色视频988gao在线观看| 蜜臀视频一区二区三区| 2018中文字幕第一页| 欧美wwwwwww| 虎白女粉嫩尤物福利视频| 中文字幕日韩综合| 欧美日韩怡红院| 精品欧美一区免费观看α√| 黄色a级在线观看| 亚洲 欧美 日韩系列| 国产免费观看高清视频| www.69av| 国产av第一区| 在线观看视频黄色| 孩娇小videos精品| 欧美激情国产精品日韩| 久久亚洲中文字幕无码| 成年人视频网站免费| 亚洲一区二区偷拍| aaa一级黄色片| www.这里只有精品| 亚洲综合欧美在线| 在线观看高清免费视频| 日韩 欧美 高清| 久久综合久久色| 又色又爽又高潮免费视频国产| 欧美精品一区二区三区三州| 久草视频这里只有精品| 久久综合亚洲精品| 97中文字幕在线| 男人日女人视频网站| 日韩伦理在线免费观看| 岛国大片在线播放| 欧美 日本 亚洲| 欧美成人免费高清视频| 免费看黄色一级大片| 亚洲精品高清无码视频| 激情综合网俺也去| 亚洲天堂av一区二区| 99精品视频网站| 色欲色香天天天综合网www| 香港三级韩国三级日本三级| 国产综合免费视频| 91女神在线观看| 一级黄色片播放| 成人一级片网站| 看看黄色一级片| 99在线免费视频观看| 国产亚洲综合视频| 在线观看免费视频污| h无码动漫在线观看| 黄色片视频在线播放| 182午夜视频| 久久亚洲a v| 不卡av免费在线| 久久久精品视频国产| 国产精品后入内射日本在线观看| 97在线播放视频| 中文字幕在线乱| 白嫩少妇丰满一区二区| 99re99热| 91视频免费版污| 欧美激情视频免费看| 超碰超碰在线观看| 成人一对一视频| 国产一二三四五| 在线观看免费黄网站| 欧美视频在线第一页| 欧美激情第3页| 色综合av综合无码综合网站| 欧美国产日韩在线视频| 欧美日韩福利在线| 国产系列第一页| 成人免费在线观看视频网站| 日韩av新片网| 妞干网这里只有精品| 国产v亚洲v天堂无码久久久| 99久久国产综合精品五月天喷水| 日韩成人av免费| 亚洲第一狼人区| 99精品在线免费视频| 青青视频免费在线观看| 欧美精品久久久久久久久25p| 人妻熟妇乱又伦精品视频| 大伊香蕉精品视频在线| 国产91av视频在线观看| 欧美午夜精品理论片| 三上悠亚在线一区二区| 激情五月开心婷婷| 久久9精品区-无套内射无码| 国产成人精品视频免费看| 久草热视频在线观看|