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

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

redis分片集群搭建與使用詳解

本篇文章主要介紹了Redis分片集群搭建與使用,本篇將以redis 分片集群為切入點,從redis 分片集群的搭建開始,詳細說說redis 分片集群相關的技術點,希望對大家有幫助。

redis分片集群搭建與使用詳解

推薦學習:Redis視頻教程

前言

redis可以說在實際項目開發中使用的非常頻繁,在redis常用集群中,我們聊到了redis常用的幾種集群方案,不同的集群對應著不同的場景,并且詳細說明了各種集群的優劣,本篇將以redis 分片集群為切入點,從redis 分片集群的搭建開始,詳細說說redis 分片集群相關的技術點;

  • 單點故障;
  • 單機寫(高并發寫)瓶頸;
  • 單機存儲數據容量限制;
  • 集群自動伸縮;
  • 集群自動故障下線與轉移;

搭建集群架構圖

redis分片集群搭建與使用詳解

前置準備

1、準備一臺(或6臺服務器,條件允許的情況下)虛擬機或服務器;

本例為演示效果準備了一臺內存8G的服務器,將通過端口進行master和slave的劃分

redis分片集群搭建與使用詳解

2、提前下載好redis安裝包;

redis分片集群搭建與使用詳解

搭建步驟

1、創建6個目錄文件,分別用于保存各個redis示例的數據

mkdir 7001 7002 7003 8001 8002 8003

2、在當前目錄下創建一個redis.conf文件,內容如下

port 6379 # 開啟集群功能 cluster-enabled yes # 集群的配置文件名稱,不需要我們創建,由redis自己維護 cluster-config-file /usr/local/soft/redis/6379/nodes.conf # 節點心跳失敗的超時時間 cluster-node-timeout 5000 # 持久化文件存放目錄 dir /usr/local/soft/redis/6379 # 綁定地址 bind 0.0.0.0 # 讓redis后臺運行 daemonize yes # 注冊的實例ip replica-announce-ip 本機公網IP # 保護模式 protected-mode no # 數據庫數量 databases 1 # 日志 logfile /usr/local/soft/redis/6379/run.log

3、批量將該配置文件拷貝到各個目錄下

echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf

redis分片集群搭建與使用詳解

redis分片集群搭建與使用詳解

4、修改每個目錄下redis.conf,將其中的6379修改為與所在目錄一致

printf '%sn' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t sed -i 's/6379/{}/g' {}/redis.conf

redis分片集群搭建與使用詳解

隨機打開某個redis.conf看看是否修改成功

redis分片集群搭建與使用詳解

4、使用下面的命令進行啟動

/usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/7001/redis.conf /usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/7002/redis.conf /usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/7003/redis.conf  /usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/8001/redis.conf /usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/8002/redis.conf /usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/8003/redis.conf

執行完成后,可以看到6個redis實例已經開啟

redis分片集群搭建與使用詳解

創建集群

通過以上的步驟,就開啟了6個redis的實例,但是這些實例之間并沒有形成一個集群,接下來就需要執行相關的命令將它們構成一個集群

1、使用如下命令構建集群(5.0之后的版本的命令)

redis-cli --cluster create --cluster-replicas 1 IP地址:7001 IP地址:7002 IP地址:7003 IP地址:8001 IP地址:8002 IP地址:8003

關于上面命令的說明

  • redis-cli –cluster 或者 ./redis-trib.rb:代表集群操作命令;
  • create:代表是創建集群;
  • –replicas 1或者–cluster-replicas 1 :指定集群中每個master的副本個數為1,此時節點總數 ÷ (replicas + 1)得到的就是master的數量。因此節點列表中的前n個就是master,其它節點都是slave節點,隨機分配到不同master ;

也可以通過 redis-cli –cluster help 命令進行集群命令的查看;

執行命令后,控制臺提示將會使用哪個示例作為master,哪個作為slave;

redis分片集群搭建與使用詳解

繼續輸入yes之后,將會按照上面的策略創建一個集群出來

redis分片集群搭建與使用詳解

通過這個輸出的日志大概可以得出如下信息:

  • 端口號依次為7001,7002和7003的為master節點;
  • 端口號依次為8001,8002和8003的為slave節點;
  • 端口號依次為7001,7002和7003的master節點,各自分配了一定區間的槽位數,分別是:[0-5460],[5461-10922],[10923-16383],即總共分配16384個槽位;

2、查看集群狀態

redis-cli -p 7001 cluster nodes

redis分片集群搭建與使用詳解

通過這個命令,可以清楚的看到集群中各個實例節點的主從狀態,實例ID(唯一身份標識),槽位區間等信息

Redis散列插槽說明

其實對redis分片集群稍有了解的同學應該知道,redis分片集群在邏輯上將集群中的所有節點構成了一塊完整的內存空間,數據寫入進來后,具體存放到哪個節點呢?所以集群引入了一個邏輯尚的插槽概念,即將集群劃分為16384個槽位,集群中的每個節點占據一部分槽位數(這個日志中可以看出來);

那么當某個具體的key寫入的時候,集群將會通過一定的算法,將要寫入的數據路由到指定的插槽上去;

這里有個點需要注意,數據key不是與節點綁定,而是與插槽綁定。

redis集群會根據key的有效部分計算插槽值,分兩種情況:

  • key中包含"{}",且“{}”中至少包含1個字符,“{}”中的部分是有效部分;
  • key中不包含“{}”,整個key都是有效部分;

舉例來說:key是num,那么就根據num計算,如果是{應用名稱}num,則根據“應用名稱”計算。計算方式是利用CRC16算法得到一個hash值,然后對16384取余,得到的結果就是slot值

下面不妨看下效果

redis分片集群搭建與使用詳解

通過上面的演示可以發現,經過集群計算的key將會分配到不同的插槽上,也就是說,key是與插槽綁定,而不是與某個節點綁定,想想為什么會這樣呢?

思考下面這個需求

如何將同一類數據固定的保存在同一個Redis實例?

簡單來說,如果key的分配完全沒有規則的話,當涉及到某個業務類的數據對應的key隨機分配到不同的節點上面時,取值的時候就會出現像上面的重定向跨節點的問題,一定程度上提升性能;

解決辦法

這一類數據使用相同的有效部分,例如key都以{業務ID}為前綴

redis分片集群搭建與使用詳解

集群伸縮(添加節點)

reids的cluster模式下,有一個比較強的功能就是集群的伸縮能力,即在現有的集群基礎上,可以根據實際的業務需求,進行集群的伸縮,下面來演示下給上面的集群添加一個新節點的步驟;

1、在當前目錄下拷貝一個目錄

redis分片集群搭建與使用詳解

2、修改配置文件的端口

sed -i s/6379/7004/g 7004/redis.conf

redis分片集群搭建與使用詳解

3、啟動這個實例

/usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/7004/redis.conf

redis分片集群搭建與使用詳解

4、使用下面的命令將7004實例假如集群

redis-cli --cluster add-node IP:7004 IP:7001

redis分片集群搭建與使用詳解

5、再次查看集群狀態

redis-cli -p 7001 cluster nodes

redis分片集群搭建與使用詳解

通過上面的狀態信息發現,7004這個節點雖然加入了集群,并成了master,但是集群并沒有給它分配任何的插槽

6、分配插槽

分配插槽的基本思路是,從現有的某個節點上遷移部分插槽到新的節點即可,執行下面的命令進行插槽分配

redis-cli --cluster reshard 101.34.23.80:7001

執行命令后將出現下面的提示,這里輸入你要轉移的插槽數量

redis分片集群搭建與使用詳解

將7004對應的實例ID輸入即可

redis分片集群搭建與使用詳解

redis分片集群搭建與使用詳解

輸入yes后開始移動插槽

redis分片集群搭建與使用詳解

redis分片集群搭建與使用詳解

移動完成后,再次查看集群狀態,這時候7004對應的節點就分配到了從0 ~ 500的數量的插槽

redis分片集群搭建與使用詳解

故障轉移

redis的cluster模式的集群,還具備一定的故障轉移能力,比如在上面的架構模式下,當集群中的某個master節點宕機之后,會出現什么情況呢?下面我們來模擬下這個過程,看看效果如何

1、使用watch命令監控下集群的狀態

通過這個命令可以實時查看集群的動態日志變化

watch redis-cli -p 7001 cluster nodes

redis分片集群搭建與使用詳解

2、手動將7002實例的master宕機

redis-cli -p 7002 shutdown

redis分片集群搭建與使用詳解

從上面的監控日志不難發現,當7002掛掉后,過了一會兒與集群以及它的從節點8003失去了聯系,然后8003這個節點升級為master節點;

3、手動將7002實例啟動起來

/usr/local/soft/redis/redis60/src/redis-server /usr/local/soft/redis/7002/redis.conf

redis分片集群搭建與使用詳解

再次分析日志,可以看到這時候7002只能以slave的身份加入了集群,事實上在某些情況下,我們仍然希望這個宕機的節點恢復后依然是主節點,這該怎么辦呢?這就涉及到了手動故障轉移,主要操作步驟如下:

  • 使用redis-cli連接7002節點;
  • 執行cluster failover命令;

在上面執行之后的情況下,7002是一個slave節點

redis分片集群搭建與使用詳解

執行 CLUSTER FAILOVER 命令,觀察日志動態變化,通過日志變化,可以看到,命令執行完畢后,7002很快就變成了master,而8003成了slave;

redis分片集群搭建與使用詳解

通過以上步驟就完成了redis的cluster模式下的故障轉移的過程

使用redistemplate訪問分片集群

1、引入依賴

<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

2、將配置文件中的集群地址修改成下面這樣即可

spring:   redis:     cluster:       nodes:        - 集群IP:7001        - 集群IP:7002        - 集群IP:7003        - 集群IP:7004        - 集群IP:8001        - 集群IP:8002        - 集群IP:8003

至于具體的代碼部分,可以參考下面的這個測試案例

	@Autowired     private RedisTemplate<String,String> redisTemplate;      //localhost:8083/set?key=b&value=123     @GetMapping("/set")     public void set(@RequestParam String key,@RequestParam String value){         redisTemplate.opsForValue().set(key,value);     }      //localhost:8083/get?key=b     @GetMapping("/get")     public String get(@RequestParam String key){         return redisTemplate.opsForValue().get(key);     }

推薦學習:Redis視頻教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产毛多水多五月激情四射| 少妇人妻一级AV片| 厨房玩丰满人妻HD完整版视频| 无码人妻丝袜在线视频| 里番ACG★同人里番本子大全| 成人无码区免费AⅤ片| 亚洲精品国精品久久99热| 欧美亚洲另类 丝袜综合网 | 人与畜禽CROPROATION| 护士被弄到高潮喷水抽搐 | 人人妻人人爽人人添少妇| 国产男女爽爽爽免费视频 | 亚洲午夜无码极品久久| 人妻丰满熟妇AⅤ无码无码区免费| 国精产品一区一区三区有限公司| 夜夜高潮夜夜爽夜夜爱爱| 挺进绝色老师的紧窄小肉六视频| 免费国内接码在线接收| 国产成人无码AV一区二区| 91精品人妻一区二区三区蜜蜜挑| 亚洲 日韩 欧美 成人 在线| 巨胸喷奶水WWW视频网站| 国产无套内射普通话对白| 被伴郎的内捧猛烈进出H| 久久久久久精品免费免费软件| 国产成人亚洲色成人网站WWW永久四虎| 18禁美女黄网站色大片免费看| 少妇人妻无码专区视频| 去掉小内打扑克的视频| 林静公交车被做到高C| 精品国产自在现线看久久| 国产精品乱码久久久久软件| 粗大挺进朋友未婚妻| FRYEE性欧美18 19| 18禁止福利午夜体验试看| 亚洲中文字幕无码爆乳| 亚洲国产欧美在线看片一国产| 无码专区人妻系列日韩| 他趴在两腿中间舔我私密有事 | 日韩系列精品无码免费不卡| 欧美在线三级艳情网站| 久久久国产99久久国产久| 精品国产一区二区三区无码蜜桃| 国产在线无码一区二区三区| 国产精品亚洲精品日韩已满| 国产精品无码一区二区在线观一| CHINESE中年熟妇FREE| 扒开腿狂躁女人爽出白浆| JAPANESE強姦するAV| JK制服白丝自慰无码自慰网站| 99久久久国产精品免费| 玉蒲团Ⅱ之性战奶水潘金莲小说| 亚洲最大AV无码网址| 玉蒲团Ⅲ艳乳叶媚子| 亚洲伊人久久综合成人网站| 一本色道久久HEZYO无码| 正在播放国产对白孕妇作爱| 亚洲综合精品第一页| 岳的奶大又白又紧| 宝贝你的奶好大我想吃| 91人人妻人人澡人人爽超污| 成年女人18毛片毛片免费不卡| JAGNEXSMAX在日本| 疯狂做受XXXX高潮视频免费| 公与憩止痒小说400章| 一本久道综合色婷婷五月| 亚洲综合一区二区三区四区五区| 亚洲系列精品少妇系列50P| 亚洲乱码一区二三四区AVA| 18亚洲AV无码成人国产| 丰满亚洲大尺度无码无码专线| 国内精品久久久久久无码| 美女扒开腿让男人桶爽| 欧美高清FREEXXXX性| 污黄啪啪网18以下勿进| 亚洲线精品一区二区三区| 潮喷无码正在播放| 国产老熟女精品一区熟女AV| 久久综合伊人中文字幕| 色欲色香天天天综合VVV| 亚洲国产欧美在线人成大黄瓜| 亚洲欧美日韩久久精品| 真实国产乱子伦沙发睡午觉 | 久艾草久久综合精品无码| 两根硕大一起挤进小紧H共妻 | ワンピースのエロ.WWW在线| 国产在线 | 传媒麻豆| 麻豆国产96在线日韩麻豆| 私人影院播放器大全| 制服中字人妻中字出轨中字| 国产精品女上位好爽在线| 男人女人做爽爽18禁免费| 手机在线永久免费观看AV片 | 久久国产AVJUST麻豆| 天天看高清影视在线观看| 99精品国产再热久久无毒不卡| 狠狠躁夜夜躁人人爽天天古典| 麻花传媒MD0076沈芯语在线| 亚洲AV成人片无码www小说| 播放灌醉水嫩大学生国内精品| 久久久久久久97| 亚洲AV无码成人精品涩涩| 成人艳情一二三区| 欧洲老妇做爰XXXⅩ性活电影| 西西GOGO大胆啪啪艺术| 国产99在线 | 中文| 人妻无码一区二区在线影院| 亚洲国产成人久久一区二区三区| 国产成人三级在线视频网站观看| 欧美人交A欧美精品AV一区| 亚州AV无码人妻一区二区三区| 丰满爆乳BBWBBWBBW| 免费无码鲁丝片一区二区| 亚洲日韩AV无码一区二区三区| 国产香蕉一区二区三区在线视频| 欧美最猛黑人AAAAAXXX片| 99久久久无码国产麻豆| 美女内射毛片在线看| 伊人色综合久久天天小片 | 亚洲精品无码午夜福利理论片| 国产又大又黑又粗免费视频| 小12箩利洗澡无码视频网站| 国产女人乱子对白AV片| 午夜成人性爽爽免费视频 | 特黄 做受又硬又粗又大视频| 丰满大屁股熟女偷拍内射| 少妇人妻综合久久中文字幕| 反差婊吃瓜爆料黑料免费| 欧美顶级METART裸体全部自慰| 一本色道久久88亚洲精品综合| 毛卡5卡6卡7卡8入口| 99久无码中文字幕一本久道| 久久久久国色ΑV免费观看| 亚洲AV无码一区二区高潮 | 欧美性猛交XXXX乱大交蜜桃| 19岁MACBOOKPRO日本| 青青草A免费线观A| 大学生高潮无套内谢视频| 无码人妻精品一区二区三区夜夜嗨| 国产乱码精品一区二区三区四川人| 亚洲AV无码专区国产乱码电影| 稚嫩的花苞被老师开了| 日本无人区码卡3卡4卡区别| 国产福利无码一区在线| 亚洲国产欧美日韩精品一区二区三 | 国产亚洲AV综合人人澡精品 | 久久精品国产亚洲AV日韩| 最新国产精品拍自在线播放| 妺妺窝人体色WWW人体色| 不卡AV一区二区| 亚洲AV无码专区亚洲AV伊甸园 | 无码中文字幕AⅤ精品影院| 久久精品国产自清天天线| 一区二区狠狠色丁香久久婷婷| 免费人成在线观看| 国产精品久久久久精品综合紧 | 国产美女遭强高潮网站| 中文无码热在线视频| 三上悠亚SSⅠN939无码播放| 精品国产AV无码专区亚洲AV| YY6080久久亚洲精品| 小辣椒AV福利在线网站| 欧美巨大XXXX做受高清| 国产A∨国片精品青草视频| 一边做饭一边躁狂怎么办 | AV无码人妻中文字幕| 欧美人妻精品一区二区三区| MM131美女图片高清图片视频| 性色AV一区二区三区| 欧美精品偷自拍另类在线观看| 国产乱人伦AV麻豆网| JAVAPARSER少妇高潮| 亚洲成A∧人片在线播放黑人| 人人妻人人澡人人爽不卡视频| 国产精品无码AV在线播放| 97人妻天天爽夜夜爽二区| 色婷婷欧美在线播放内射| 久久水蜜桃亚洲AV无码精品| 国产成人午夜无码电影在线观看| 亚洲人成无码网站在线观看野花 | 亚洲欧美在线人成最新| 特级BBBBBBBBB视频| 国产午夜成人无码免费| 中文字幕一区二区人妻性色 | 99RE66热这里只有精品3| 亚洲AV成人网站在线播放| 秋霞电影院yy2933| 老男人把舌头伸进我下面| 好男人WWW在线影院官网| 刺激战场老阿姨是谁啊| 亚洲色无码专区一区| 睡美人免费观看完整版西瓜 | 欧美变态口味重另类在线视频| 精品无码久久久久久久久| 成年无码动漫AV片在线观看羞羞| 在线观看国产精选免费| 午夜无码视频在线观看网站| 天天躁日日躁很很很躁| 女人被弄到高潮的免费视频APP | 麻豆国产原创视频在线播放|