*疑問:Redis的key是無限大嗎?最大是多少?
答:Redis創建key的原則,不宜過大,見面知意即可。如:red_paper_queue(紅包隊列)。
<code> /<code>
3.1 Redis 的主從複製(讀寫分離)
意義:
1、讀寫分離,分攤讀寫壓力。
2、提高了服務器處理的性能。
<code>#3
.1
.1
Redis
master
負責寫入數據,並將數據同步給slave
(slave
可以多個)。#3
.1
.2
slave
負責讀取功能,以緩解單機Redis
的讀取壓力。/<code>
讀寫解析圖:
配置搭建步驟:
1、查看常用命令
<code>redis-server --
help
-- 萬能命令redi-cli --
help
--萬能命令keys * --萬能命令
1、開啟redis.conf 添加制定的主服務節點ip port
slave of 127.0.0.1 6379
2、啟動redis
service redisd start 或者 redis-server /etc/redis/redis.conf -- 制定配置文件啟動(生產環境使用配置文件模式)
3、啟動狀態下設置主從模式
redis-server --port 6380 -slave of 127.0.0.1 6379 -- 6380為從服務器端口 -- 6379 為主服務器端口
4、退出主從模式
slave of no one -- 退出主從模式 從服務器改為主服務器。(從節點不可以寫操作)
5、進入主從模式
slave of 127.0.0.1 6278
/<code>
以上兩種啟動方式均可。
Redis 主從節點注意:
1、正常生產使用一主多從(一個主節點,多個從節點)。
2、主節點宕機,從節點仍可以進行讀取,但是寫操作失敗。
3、從節點宕機,可以調用其他正常從節點(少了一個從節點,處理讀取的能力變弱)。
<code> /<code>
由於生產環境 主服務器宕機時手動切換不現實,所以 哨兵模式就非常適合處理這種場景。
3.2 Redis的哨兵模式。(sentinel)
意義:
1、高可用(故障遷移)。
Sentinel 會在master失聯後進行再次確認,多次確定失聯後(多半數/超過權重配置數)。自動執行failover操作,升級從節點為master節點。移除失聯節點。
<code>#ss
-tanl
--
linux
命令 查看服務佔用的端口號#scp
redis
.conf
host2
:password
--
同步配置文件到host2
scp
複製文件或目錄。/<code>
Redis發佈了一個管理多個redis服務實例的方案,redis-sentinel。
redis-sentinel 會時時檢查master和slave的狀態是否正常。
每個redis sentinel 可以監控多個master和slave。
配置文件
<code>#1
、sentinel
默認端口號 26379#2
、進入sentinel
配置文件添加參數#port
26379#sentinel
monitor
master_1
127.0
.0
.1
6379 3--
哨兵監視的主服務器 3為投票權重 # 如:5個哨兵 當3個哨兵 請求不通master_1
時 ,主服務器ip
就可以進行移除。#3
、sentinel
會根據master
的配置發現對應下的slave
。 # 4、按照步驟2設置配置sentinel1
.conf
文件#5
、啟動#redis-sentinel
sentinel
.conf
/<code>
啟動哨兵模式
<code>1、在redis安裝文件目錄中找到redis-sentinel
2、將redis-sentinel文件從/home/redis/src/複製到
$REDIS_HOME
/bin 路徑下3、啟動哨兵模式
redis-sentinel 或者redis-server /path/redis/sentinel.conf --sentinel (建議使用後者)
redis-sentinel sentinel.conf (配置文件啟動 同上)
/<code>
哨兵模式下主節點宕機,哨兵確認失聯後重新選取主節點。
上圖 各個sentinel之間也有通訊。
高可用處理過程
<code> /<code>
redis集群搭建常用命令:
<code>#service
redisd
start
--
啟動Redis
server
#service
redisd
stop
--
關閉Redis
server
#redis
cli
-host
-ip
--
redis
客戶端連接指定redis
server
-u
root
-p
password
#redis
cli
-h
127.0
.0
.1
-p
26379info
sentinel
--
查看對應節點的哨兵信息。(見下圖)/<code>
結論:
1、主從模式分擔了讀寫的壓力。
2、哨兵模式解決了master的故障移除,實現高可用。
3、哨兵模式是基於主從模式+sentinel 來實現的。
4、兩種模式都是寫服務單一。只有一個master服務器。