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

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

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

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

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

推薦學(xué)習(xí):Redis視頻教程

前言

redis可以說在實(shí)際項(xiàng)目開發(fā)中使用的非常頻繁,在redis常用集群中,我們聊到了redis常用的幾種集群方案,不同的集群對應(yīng)著不同的場景,并且詳細(xì)說明了各種集群的優(yōu)劣,本篇將以redis 分片集群為切入點(diǎn),從redis 分片集群的搭建開始,詳細(xì)說說redis 分片集群相關(guān)的技術(shù)點(diǎn);

  • 單點(diǎn)故障;
  • 單機(jī)寫(高并發(fā)寫)瓶頸;
  • 單機(jī)存儲數(shù)據(jù)容量限制;
  • 集群自動伸縮;
  • 集群自動故障下線與轉(zhuǎn)移;

搭建集群架構(gòu)圖

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

前置準(zhǔn)備

1、準(zhǔn)備一臺(或6臺服務(wù)器,條件允許的情況下)虛擬機(jī)或服務(wù)器;

本例為演示效果準(zhǔn)備了一臺內(nèi)存8G的服務(wù)器,將通過端口進(jìn)行master和slave的劃分

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

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

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

搭建步驟

1、創(chuàng)建6個目錄文件,分別用于保存各個redis示例的數(shù)據(jù)

mkdir 7001 7002 7003 8001 8002 8003

2、在當(dāng)前目錄下創(chuàng)建一個redis.conf文件,內(nèi)容如下

port 6379 # 開啟集群功能 cluster-enabled yes # 集群的配置文件名稱,不需要我們創(chuàng)建,由redis自己維護(hù) cluster-config-file /usr/local/soft/redis/6379/nodes.conf # 節(jié)點(diǎn)心跳失敗的超時時間 cluster-node-timeout 5000 # 持久化文件存放目錄 dir /usr/local/soft/redis/6379 # 綁定地址 bind 0.0.0.0 # 讓redis后臺運(yùn)行 daemonize yes # 注冊的實(shí)例ip replica-announce-ip 本機(jī)公網(wǎng)IP # 保護(hù)模式 protected-mode no # 數(shù)據(jù)庫數(shù)量 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分片集群搭建與使用詳解

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

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

4、使用下面的命令進(jìn)行啟動

/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

執(zhí)行完成后,可以看到6個redis實(shí)例已經(jīng)開啟

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

創(chuàng)建集群

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

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

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

關(guān)于上面命令的說明

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

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

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

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

繼續(xù)輸入yes之后,將會按照上面的策略創(chuàng)建一個集群出來

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

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

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

2、查看集群狀態(tài)

redis-cli -p 7001 cluster nodes

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

通過這個命令,可以清楚的看到集群中各個實(shí)例節(jié)點(diǎn)的主從狀態(tài),實(shí)例ID(唯一身份標(biāo)識),槽位區(qū)間等信息

Redis散列插槽說明

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

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

這里有個點(diǎn)需要注意,數(shù)據(jù)key不是與節(jié)點(diǎn)綁定,而是與插槽綁定。

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

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

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

下面不妨看下效果

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

通過上面的演示可以發(fā)現(xiàn),經(jīng)過集群計(jì)算的key將會分配到不同的插槽上,也就是說,key是與插槽綁定,而不是與某個節(jié)點(diǎn)綁定,想想為什么會這樣呢?

思考下面這個需求

如何將同一類數(shù)據(jù)固定的保存在同一個Redis實(shí)例?

簡單來說,如果key的分配完全沒有規(guī)則的話,當(dāng)涉及到某個業(yè)務(wù)類的數(shù)據(jù)對應(yīng)的key隨機(jī)分配到不同的節(jié)點(diǎn)上面時,取值的時候就會出現(xiàn)像上面的重定向跨節(jié)點(diǎn)的問題,一定程度上提升性能;

解決辦法

這一類數(shù)據(jù)使用相同的有效部分,例如key都以{業(yè)務(wù)ID}為前綴

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

集群伸縮(添加節(jié)點(diǎn))

reids的cluster模式下,有一個比較強(qiáng)的功能就是集群的伸縮能力,即在現(xiàn)有的集群基礎(chǔ)上,可以根據(jù)實(shí)際的業(yè)務(wù)需求,進(jìn)行集群的伸縮,下面來演示下給上面的集群添加一個新節(jié)點(diǎn)的步驟;

1、在當(dāng)前目錄下拷貝一個目錄

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

2、修改配置文件的端口

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

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

3、啟動這個實(shí)例

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

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

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

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

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

5、再次查看集群狀態(tài)

redis-cli -p 7001 cluster nodes

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

通過上面的狀態(tài)信息發(fā)現(xiàn),7004這個節(jié)點(diǎn)雖然加入了集群,并成了master,但是集群并沒有給它分配任何的插槽

6、分配插槽

分配插槽的基本思路是,從現(xiàn)有的某個節(jié)點(diǎn)上遷移部分插槽到新的節(jié)點(diǎn)即可,執(zhí)行下面的命令進(jìn)行插槽分配

redis-cli --cluster reshard 101.34.23.80:7001

執(zhí)行命令后將出現(xiàn)下面的提示,這里輸入你要轉(zhuǎn)移的插槽數(shù)量

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

將7004對應(yīng)的實(shí)例ID輸入即可

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

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

輸入yes后開始移動插槽

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

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

移動完成后,再次查看集群狀態(tài),這時候7004對應(yīng)的節(jié)點(diǎn)就分配到了從0 ~ 500的數(shù)量的插槽

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

故障轉(zhuǎn)移

redis的cluster模式的集群,還具備一定的故障轉(zhuǎn)移能力,比如在上面的架構(gòu)模式下,當(dāng)集群中的某個master節(jié)點(diǎn)宕機(jī)之后,會出現(xiàn)什么情況呢?下面我們來模擬下這個過程,看看效果如何

1、使用watch命令監(jiān)控下集群的狀態(tài)

通過這個命令可以實(shí)時查看集群的動態(tài)日志變化

watch redis-cli -p 7001 cluster nodes

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

2、手動將7002實(shí)例的master宕機(jī)

redis-cli -p 7002 shutdown

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

從上面的監(jiān)控日志不難發(fā)現(xiàn),當(dāng)7002掛掉后,過了一會兒與集群以及它的從節(jié)點(diǎn)8003失去了聯(lián)系,然后8003這個節(jié)點(diǎn)升級為master節(jié)點(diǎn);

3、手動將7002實(shí)例啟動起來

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

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

再次分析日志,可以看到這時候7002只能以slave的身份加入了集群,事實(shí)上在某些情況下,我們?nèi)匀幌M@個宕機(jī)的節(jié)點(diǎn)恢復(fù)后依然是主節(jié)點(diǎn),這該怎么辦呢?這就涉及到了手動故障轉(zhuǎn)移,主要操作步驟如下:

  • 使用redis-cli連接7002節(jié)點(diǎn);
  • 執(zhí)行cluster failover命令;

在上面執(zhí)行之后的情況下,7002是一個slave節(jié)點(diǎn)

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

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

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

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

使用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);     }

推薦學(xué)習(xí):Redis視頻教程

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
日本人も中国人も汉字を| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 纯肉无遮挡H肉动漫在线观看3D| 嘼皇PORONOⅤIDEOS极| 国产成人MV视频在线观看| 国产精品爽爽VA在线观看网站 | А∨天堂一区一本到| 大胆GOGO高清在线观看| 国产精品欧美久久久久无广告| 国产亚洲欧美在线专区| 久久AV无码精品人妻出轨| 免费A级毛片无码视频| 人妻中文字幕乱人伦在线| 偷窥熟女大屁股对白视频| 亚洲国产成人无码AV在线影院L| 精品国产人成亚洲区| 久久99久久99精品免观看| 男女一起差差差差差| 日本在线视频WWW色| 午夜香吻高清观看视频在线| 野花AⅤ亚洲高清完整版在线观看| 77777欧美毛片777777| 堕落女教师动漫全无修| 国产香蕉国产精品偷在线| 久久久久人妻精品一区| 人妻精品一区二区| 性生大片免费观看性| 伊人久久大香线蕉AV仙人 | 亚洲中文字幕无码日韩精品| AV大片在线无码免费| 国产成人无码一二三区视频| 九九九精品成人免费视频7| 欧美熟妇呻吟猛交XX性| 无码中文字幕AV免费放DVD| 伊人久久大香线蕉AV影院| 厨房玩丰满人妻HD完整版视频| 国语高潮无遮挡无码免费看| 男女一起差差差差差| 挺进绝色老师的紧窄小肉| 亚洲综合精品第一页| 趁夫不在给给公侵犯了| 精品高潮呻吟99AV无码| 人妻少妇精品无码系列 | 国产农村乱人伦精品视频| 麻豆妓女爽爽一区二区三| 少妇极品丰满人妻无码视频| 野花おっさんとわたし| 放荡的熟妇高清视频| 久久久精品人妻一区二区三区| 日韩一区二区三区四区| 亚洲一级无码av毛片www| 成人区人妻精品一区二区不卡| 精品国产乱码久久久软件下载| 奇米四色7777中文字幕| 亚洲国产精品日韩AV专区| JAPAN丰满人妻HD| 激情五月色综合国产精品| 人妻无码中文字幕一区二区三区| 亚洲精品高清国产一久久| 成人爽A毛片在线视频| 久久久久亚洲精品男人的天堂| 色一情一乱一伦麻豆| 一出一进一爽一粗一大视频免费的| 国产99久久久国产无需播放器| 老头边吃奶边弄进去呻吟| 无码高潮爽到爆的喷水视频| 52秋霞东北熟女叫床| 狠狠色伊人亚洲综合网站野外 | 国产精品无码DVD在线观看| 内射老妇女BBWXOGOD| 亚洲GAY片在线GV网站| 成人视频在线观看| 免费无码又黄又爽又刺激| 亚洲AV无码国产精品永久一区| 不卡无码人妻一区二区三区| 久久婷婷五月综合色俺也想去| 无码AⅤ最新AV无码专区| WWW久久无码天堂MV| 久久人妻少妇嫩草AV无码专区| 无码网站天天爽免费看视频| 宝贝腿开大点我添添公视频免费| 久久这里只精品国产免费9| 小受呻吟高潮GV在线观看| 成人午夜福利免费体验区| 妺妺窝人体色www聚色窝仙踪| 亚洲大尺度专区无码浪潮AV| 国产VA在线观看免费| 人妻蜜と1~4中文字幕月野定规| 伊人久久大香线蕉综合AV| 狠狠噜天天噜日日噜| 偷窥妇科TUBESEX妇| 成年女人毛片免费视频喷潮| 男人边吃奶边揉好爽免费视频| 亚洲人成网77777亚洲色| 国产精品久久久久永久免费看 | 国产精品久久久久电影院| 日本高清在线一区二区三区| 2019NV天堂香蕉在线观看| 久久99热精品免费观看| 亚洲av成人一区| 国产av一区二区三区| 人妻无码中文字幕一区二区三区| 51精品国产人成在线观看 | 一炕四女被窝交换啪啪| 精品国产三级A在线观看| 亚洲AV无码精品网站| 国产精品偷伦视频免费观看了 | 亚洲夂夂婷婷色拍WW47| 黑人入室强丰满人妻| 性猛交ⅩXXX富婆video| 国产精华液一线二线三线| 少妇久久久久久被弄到高潮| 波多野结AV衣东京热无码专区| 区二区三区在线 | 欧洲| 99久久亚洲精品无码毛片| 米奇777四色精品人人爽| 一本色道久久88—综合亚洲精品| 精品久久久久久久久久久AⅤ| 亚洲AV无码一区二区二三区我| 国产精品无码素人福利免费| 玩两个丰满老熟女久久网| 公在客厅里吃我的奶涨奶视频 | 嫩草伊人久久精品少妇AV| 中文字幕四区五区六区蜜桃| 老司机亚洲精品影院| 中文毛片无遮挡高潮免费| 麻豆蜜桃AV蜜臀AV色欲AV| 中国熟妇老熟女妓女9| 免费人成网WW555KKK在线| 专干日本熟妇人妻| 欧美XXXX做受欧美| MM131美女大尺度私密照尤果| 欧美性大战XXXXX| 白嫩少妇激情无码| 日日摸夜夜爽无码毛片精选| 反差小青梅不经C1V1| 天堂√在线中文官网在线| 国产精华液一二三区别| 西西人体自慰扒开下部93| 国自产拍精品偷拍视频| 亚洲高清国产AV拍精品青青草原 | 国产成人综合久久久久久| 性AV盈盈无码天堂| 黑人疯狂巨大XXⅩ0O0| 亚洲日韩乱码中文无码蜜桃臀| 久久久久久精品人妻免费网站| 永久免费AV无码网站韩国毛片| 免费A级毛片无码免费视频| CHINESE农村老妓女| 日产乱码一二三区别免费影视| 嗯…啊 摸 湿 奶头免费视频| 婷婷四月开心色房播播| 国产亚洲AV☆浪潮在线观看 | 无码人妻在线视频| 精品爆乳一区二区三区无码AV| 伊人久久大香线蕉无码不卡| 女人裸体张开腿无遮挡| 把女的下面扒开添视频 | 国产男男Gay做受| 亚洲乱亚洲乱少妇无码| 两毫米的小洞你却稳稳命中| GOGO西西自慰人体高清人体模| 日本体内SHE精高潮| 国产黄 色 网 站 成 人免费| 亚洲成AV人片在线观看无下载| 老汉粗大不带套怀孕| ZZIIZZII亚洲日本少妇| 偷偷色噜狠狠狠狠的777米奇| 国产色诱视频在线观看| 亚洲中文字幕无码一久久区| 欧美大肚子孕妇疯狂作爱视频| 大象大象视频WWW在线观看| 亚洲AⅤ无码精品一区二区三区| 久久久久AV无码免费网 | 欧美一性一乱一交一视频C| 高清粉嫩无套内谢国语播放| 亚洲AV人人澡人人爽人人夜夜| 老师黑色双开真丝旗袍| 成人福利国产午夜AV免费不卡在| 小婷又紧又嫩又窄又多水| 久久综合九色综合欧洲98| 成人国产精品一区二区免费| 亚洲AV无码国产精品色午| 免费夜色污私人网站在线观看| 疯狂做受ⅩXXX高潮欧美| 亚洲男女一区二区三区| 欧美日韩一区二区在线视频精品| 国产高清在线精品一区二区三区| 亚洲香蕉成人AV网站在线观看| 人妻人妇人妻一区二区三区| 国产亚洲成AV人片在线观黄桃 | 内射少妇骚B一√| 国产精品爆乳奶水无码视频| 夜夜爽夜夜叫夜夜高潮漏水| 日本午夜精品一区二区三区电影| 国产亚洲精久久久久久无码| 2018最新国产好看的国产| 小雪的L3又嫩又紧又多水图 | 天天爽夜夜爽人人爽QC| 久久香蕉国产线看观看手机 |