Windows下如何安裝配置Redis環(huán)境
下載redis:https://github.com/MicrosoftArchive/redis/releases(這里選擇Redis-x64-3.0.504.zip)
一、單節(jié)點(diǎn)環(huán)境Redis臨時(shí)服務(wù)
# 打開cmd,進(jìn)入到剛才解壓到的目錄,啟動(dòng)臨時(shí)服務(wù):redis-server.exe redis.windows.conf (備注:通過這個(gè)命令,會(huì)創(chuàng)建Redis臨時(shí)服務(wù),不會(huì)在window Service列表出現(xiàn)Redis服務(wù)名稱和狀態(tài),此窗口關(guān)閉,服務(wù)會(huì)自動(dòng)關(guān)閉。)
#打開另一個(gè)cmd窗口,客戶端調(diào)用:redis-cli.exe -h 127.0.0.1 -p 6379。
Redis自定義windows服務(wù)安裝
進(jìn)入Redis安裝包目錄,安裝服務(wù):redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbose
可以在window service列表下查看是否安裝成功。
安裝服務(wù):redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbose
啟動(dòng)服務(wù):redis-server.exe --service-start --service-name redisserver1
停止服務(wù):redis-server.exe --service-stop --service-name redisserver1
卸載服務(wù):redis-server.exe --service-uninstall--service-name redisserver1
二、Redis Cluster環(huán)境
搭建 Redis集群,三個(gè)主節(jié)點(diǎn),三個(gè)從節(jié)點(diǎn),多主節(jié)點(diǎn)為了分布集群,從節(jié)點(diǎn)是為了高可用性。
軟件環(huán)境準(zhǔn)備
# 下載redis最新版本(版本必需要3.0以上)
下載地址:https://github.com/MSOpenTech/redis/releases下載Redis-x64-3.0.504.zip
# 安裝Ruby語言運(yùn)行環(huán)境
下載地址:http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.3.3-x64.exe
選中3個(gè),然后點(diǎn)擊安裝。
驗(yàn)證:打開cmd窗口,輸入ruby –version出現(xiàn)版本號(hào) 表示安裝成功。
#安裝redis的ruby驅(qū)動(dòng)rubygems
下載地址:https://rubygems.org/pages/download
也可以去這里下載:http://chabaoo.cn/softs/539242.html
進(jìn)入rubygems-2.7.7目錄下面執(zhí)行cmd命令:ruby setup.rb
# 執(zhí)行命令:gem install redis
開始安裝
#解壓Redis-x64-3.0.504.zip,并復(fù)制,如下圖
#修改每個(gè)redis.windows.conf, 修改里面的端口號(hào),以及集群的配置
cluster-enabled yescluster-config-file nodes-6379.confcluster-node-timeout 15000appendonly yes
如果cluster-enabled 不為yes, 那么在使用JedisCluster集群代碼獲取的時(shí)候,會(huì)報(bào)錯(cuò)。
cluster-node-timeout 調(diào)整為 15000,那么在創(chuàng)建集群的時(shí)候,不會(huì)超時(shí)。
cluster-config-file nodes-6379.conf 是為該節(jié)點(diǎn)的配置信息,這里使用 nodes-端口.conf命名方法。服務(wù)啟動(dòng)后會(huì)在目錄生成該文件。
記得把其他節(jié)點(diǎn)配置也要改。
#編寫一個(gè)bat來啟動(dòng)redis,在每個(gè)節(jié)點(diǎn)目錄下創(chuàng)建start.bat,內(nèi)容如下(端口記得對(duì)應(yīng)):
title redis-7000redis-server.exe redis.windows.conf
#進(jìn)入每個(gè)端口的文件夾,執(zhí)行start-server.bat文件,啟動(dòng)每個(gè)節(jié)點(diǎn)的服務(wù)
#安裝集群腳本redis-trib
下載地址https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb
進(jìn)入redis-trib.rb所在的目錄。
執(zhí)行以下命令:
ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005
注:如果出現(xiàn)Node is not empty,先清空所有端口目錄下面的nodes.conf和dump.rdb文件再重復(fù)執(zhí)行第9步,然后再執(zhí)行上面的命令。
在出現(xiàn)Can I set the above configuration? (type 'yes' to accept): 請(qǐng)確定并輸入yes。
#驗(yàn)證集群是否啟動(dòng)成功
進(jìn)入某個(gè)端口文件夾,操作某個(gè)節(jié)點(diǎn)指令:
redis-cli.exe -c -p 7000
參數(shù)-c表示進(jìn)入cluster模式。
在7000節(jié)點(diǎn)存儲(chǔ)一個(gè)鍵
Set test zxh
注意:可能會(huì)出現(xiàn)“Redirected to slot [8106] located at 127.0.0.1”的提示,這表示通過計(jì)算,落在了8106這個(gè)slot上了(因?yàn)?000是slave,7001是master只有master才能寫入,如果在7001進(jìn)行寫入,則不會(huì)有該提示信息)。
重新打開一個(gè)cmd窗口連接7001節(jié)點(diǎn)
redis-cli.exe -c -p 7001
執(zhí)行
get test
如果能取到在7000節(jié)點(diǎn)存儲(chǔ)的鍵,表明集群安裝成功。
注:下次啟動(dòng)集群的時(shí)候,只需要啟動(dòng)每個(gè)節(jié)點(diǎn)就行,無需在執(zhí)行ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005命令了。
三、redis哨兵哨兵Sentinel
Redis Sentinel是一個(gè)分布式系統(tǒng), 一個(gè)架構(gòu)中可以運(yùn)行多個(gè)Sentinel 進(jìn)程,一個(gè) Sentinel 可以與其他多個(gè) Sentinel 進(jìn)行連接, 各個(gè) Sentinel 之間可以互相檢查對(duì)方的可用性,并進(jìn)行信息交換。
每個(gè)哨兵(sentinel)會(huì)向其它哨兵(sentinel)、master、slave 定時(shí)發(fā)送消息,以確認(rèn)對(duì)方是否“活”著。如果發(fā)現(xiàn)對(duì)方在
指定時(shí)間(可配置)內(nèi)未回應(yīng),則暫時(shí)認(rèn)為對(duì)方已掛(即所謂的“主觀認(rèn)為宕機(jī)”或“主觀下線”:Subjective Down,簡(jiǎn)稱 sdown)
若“哨兵群”中的多數(shù) sentinel 都報(bào)告某一 master 沒響應(yīng),系統(tǒng)才認(rèn)為 該master “徹底死亡”(即客觀上的真正宕機(jī)或“客觀下線”:Objective Down,簡(jiǎn)稱 odown),通過一定的 vote 算法,從剩下的 slave 節(jié)點(diǎn)中,選一臺(tái)提升為 master,然后自動(dòng)修改相關(guān)配置。
配置sentinel
注意:windows系統(tǒng)下解壓的Redis的zip文件夾中是不存在sentinel.conf文件的,那么我們需要手動(dòng)來新建該文件。
sentinel.conf的文件內(nèi)容解讀:
# ------------------------------------------------------------------------------------ #
# 這個(gè)是Redis-6379的配置內(nèi)容,其它兩個(gè)Redis-6380、Redis-6381同理新增然后改一下端口即可 #
# ------------------------------------------------------------------------------------ #
# 當(dāng)前Sentinel服務(wù)運(yùn)行的端口
# 在默認(rèn)情況下,Sentinel 使用 TCP 端口 26379(普通 Redis 服務(wù)器使用的是 6379 )
port 26379
# 哨兵監(jiān)聽的主節(jié)點(diǎn)mymaster;最后面的數(shù)字 3 表示最低通過票數(shù);# 默認(rèn)值 2
# 如果投票通過,則哨兵群體認(rèn)為該主節(jié)點(diǎn)客觀下線(odowm)
sentinel monitor mymaster 127.0.0.1 6379 3
# 哨兵認(rèn)定當(dāng)前主節(jié)點(diǎn)mymaster失效的判別間隔時(shí)間
# 如果在設(shè)置的時(shí)間內(nèi)(毫秒),當(dāng)前主節(jié)點(diǎn)沒有響應(yīng)或者響應(yīng)錯(cuò)誤代碼,則當(dāng)前哨兵認(rèn)為該主節(jié)點(diǎn)主主觀下線(sdown)
# 3s內(nèi)mymaster無響應(yīng),則認(rèn)為mymaster宕機(jī)了
sentinel down-after-milliseconds mymaster 3000
# 執(zhí)行故障轉(zhuǎn)移時(shí),最多有1個(gè)從節(jié)點(diǎn)同時(shí)對(duì)新的主節(jié)點(diǎn)進(jìn)行同步
# 當(dāng)新的master上位時(shí),允許從節(jié)點(diǎn)同時(shí)對(duì)新主節(jié)點(diǎn)進(jìn)行同步的從節(jié)點(diǎn)個(gè)數(shù);默認(rèn)是1,建議保持默認(rèn)值
# 在故障轉(zhuǎn)移期間,將會(huì)終止客戶端的請(qǐng)求
# 如果此值較大,則意味著"集群"終止客戶端請(qǐng)求的時(shí)間總和比較大
# 反之此值較小,則意味著"集群"在故障轉(zhuǎn)移期間,多個(gè)從節(jié)點(diǎn)仍可以提供服務(wù)給客戶端
sentinel parallel-syncs mymaster 1
# 故障轉(zhuǎn)移超時(shí)時(shí)間。
# 當(dāng)故障轉(zhuǎn)移開始后,但是在此時(shí)間內(nèi)仍然沒有觸發(fā)任何故障轉(zhuǎn)移操作,則當(dāng)前哨兵會(huì)認(rèn)為此次故障轉(zhuǎn)移失敗
sentinel failover-timeout mymaster 10000
如果搭建的是哨兵集群,只需要修改port端口即可。
哨兵啟動(dòng)腳本start-sentinel.bat內(nèi)容如下:
redis-server.exe sentinel.conf --sentinel
注意:sentinel的配置與redis的配置是分開的,如果搭建的是:一主兩從,哨兵集群(3個(gè))。那么就需要復(fù)制6份Redis腳本,3份作為主從復(fù)制(一主兩從),3份作為sentinel。
主從切換
可以從 sentinel 日志中出現(xiàn)的幾個(gè)消息來進(jìn)行查看故障轉(zhuǎn)移:
- ① +switch-master:表示切換主節(jié)點(diǎn)(從節(jié)點(diǎn)晉升為主節(jié)點(diǎn))
- ② +sdown:主觀下線
- ③ +odown:客觀下線
- ④ +convert-to-slave:切換從節(jié)點(diǎn)(原主節(jié)點(diǎn)降為從節(jié)點(diǎn))
但是在我們的操作中,發(fā)現(xiàn)當(dāng)master下線的時(shí)候,sentinel可以看到master下線的日志,但是并沒有主備切換的日志信息
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot~ObjectMapper~dto到entity的自動(dòng)賦值
這篇文章主要介紹了springboot~ObjectMapper~dto到entity的自動(dòng)賦值,本文分三種情況給大家介紹,需要的朋友可以參考下2018-08-08mybatis-plus實(shí)體類中出現(xiàn)非數(shù)據(jù)庫映射字段解決辦法
這篇文章主要介紹了mybatis-plus實(shí)體類中出現(xiàn)非數(shù)據(jù)庫映射字段解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03關(guān)于HashMap的put方法執(zhí)行全過程
這篇文章主要介紹了關(guān)于HashMap的put方法執(zhí)行全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06java動(dòng)態(tài)規(guī)劃算法——硬幣找零問題實(shí)例分析
這篇文章主要介紹了java動(dòng)態(tài)規(guī)劃算法——硬幣找零問題,結(jié)合實(shí)例形式分析了java動(dòng)態(tài)規(guī)劃算法——硬幣找零問題相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05SpringBoot詳解如果通過@Value注解給靜態(tài)變量注入值
這篇文章主要介紹了springboot如何通過@Value給靜態(tài)變量注入值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06