天天看點

[Redis] Redis 安裝部署

[Redis] Redis 安裝部署

簡介

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協定、支援網絡、可基于記憶體亦可持久化的日志型、Key-Value 資料庫,并提供多種語言的API。

它通常被稱為資料結構伺服器,因為值(value)可以是 字元串(String), 哈希(Hash), 清單(list), 集合(sets) 和 有序集合(sorted sets)等類型。本文主要介紹 Redis 啟動配置參數含義、主從、哨兵模式的環境搭建方式。

windows 下安裝

linux & mac 下安裝

參數配置

BASIC

RDB

AOF

VM

Client

LUA

SlAVE

REPL

監控

執行日志

延遲監控

慢日志

安全

存儲結構

連接配接

Tips

運作模式

單機模式

主從模式

主機

從機

部署

info

哨兵模式(Redis 高可用)

sentinel 機制

配置 sentinel

運作狀态

高可用

小結

REFERENCES

手機使用者請<code>橫屏</code>擷取最佳閱讀體驗,<code>REFERENCES</code>中是本文參考的連結,如需要連結和更多資源,可以關注公衆号後加入『知識星球』擷取長期知識分享服務。
下載下傳位址: https://github.com/MicrosoftArchive/redis/releases
下載下傳 &amp; 編譯
啟動
[Redis] Redis 安裝部署
通路

cp -R /Users/xiazhaoyang/Ashe/plugin/redis/redis-6.0.8 /usr/local/bin/redis-6.0.8

cd /usr/local/bin/redis-6.0.8

綁定的主機位址

​ bind 127.0.0.1

redis3.2 版本後新增 protected-mode 配置,預設是 yes,即開啟。設定外部網絡連接配接 redis 服務,設定方式: 1、關閉 protected-mode 模式,此時外部網絡可以直接通路 2、開啟 protected-mode 保護模式,需配置 bind ip 或者設定通路密碼

​ protected-mode yes

指定Redis監聽端口,預設端口為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為預設端口,因為6379在手機按鍵上 MERZ 對應的号碼,而 MERZ 取自意大利歌女 Alessia Merz 的名字

​ port 6479

設定資料庫的數量,預設資料庫為0,可以使用SELECT 指令在連接配接上指定資料庫id

​ databases 16

指定在多長時間内,有多少次更新操作,就将資料同步到資料檔案,可以多個條件配合。

<code>save &lt;seconds&gt; &lt;changes&gt;</code>

指定 Redis 最大記憶體限制,Redis在啟動時會把資料加載到記憶體中,達到最大記憶體後,Redis會先嘗試清除已到期或即将到期的Key,當此方法處理 後,仍然到達最大記憶體設定,将無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的 vm 機制,會把Key存放記憶體,Value 會存放在 swap 區

​ <code>maxmemory &lt;bytes&gt;</code>

指定存儲至本地資料庫時是否壓縮資料,預設為yes,Redis采用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導緻資料庫檔案變的巨大

​ rdbcompression yes

指定本地資料庫檔案名,預設值為 dump.rdb

​ dbfilename dump.rdb

是否校驗rdb檔案。從rdb格式的第五個版本開始,在rdb檔案的末尾會帶上CRC64的校驗和。這跟有利于檔案的容錯性,但是在儲存rdb檔案的時候,會有大概10%的性能損耗,是以如果你追求高性能,可以關閉該配置。

​ rdbchecksum no

指定本地資料庫存放目錄

​ dir ./

當 RDB持久化出現錯誤後,是否依然進行繼續進行工作, yes:不能進行工作, no:可以繼續進行工作 可以通過info中的rdb_last_bgsave_status了解RDB持久化是否有錯誤

​ stop-writes-on-bgsave-error yes

指定是否在每次更新操作後進行日志記錄, Redis 在預設情況下是異步的把資料寫入磁盤,如果不開啟,可能會在斷電時導緻一段時間内的資料丢失。因為 redis 本身同步資料檔案是按上面 save 條件來同步的,是以有的資料會在一段時間内隻存在于記憶體中。預設為 no 。 開啟 append only 模式之後,redis 會把所接收到的每一次寫操作請求都追加到 appendonly.aof 檔案中,當 redis 重新啟動時,會從該檔案恢複出之前的狀态。但是這樣會造成 appendonly.aof 檔案過大,是以 redis 還支援了 BGREWRITEAOF 指令,對 appendonly.aof 進行重新整理。預設是不開啟的。

​ appendonly no

指定更新日志檔案名,預設為appendonly.aof

​ appendfilename appendonly.aof

指定更新日志條件(設定 aof 的同步頻率),共有3個可選值: no:表示等作業系統進行資料緩存同步到磁盤(快) always:表示每次更新操作後手動調用fsync()将資料寫到磁盤(慢,安全) everysec:表示每秒同步一次(折衷,預設值)

​ appendfsync everysec

指定是否在背景 aof 檔案 rewrite 期間調用 fsync,預設為 no,表示要調用 fsync(無論背景是否有子程序在刷盤)。Redis 在背景寫 RDB 檔案或重寫 aof 檔案期間會存在大量磁盤 IO,此時,在某些 linux 系統中,調用 fsync 可能會阻塞。

​ no-appendfsync-on-rewrite no

指定 Redis 重寫 aof 檔案的條件,預設為 100,表示與上次 rewrite 的 aof 檔案大小相比,目前 aof 檔案增長量超過上次 aof 檔案大小的 100% 時,就會觸發 background rewrite。若配置為0,則會禁用自動 rewrite。

​ auto-aof-rewrite-percentage 100

指定觸發 rewrite 的 aof 檔案大小。若 aof 檔案小于該值,即使目前檔案的增量比例達到 auto-aof-rewrite-percentage 的配置值,也不會觸發自動 rewrite。即這兩個配置項同時滿足時,才會觸發 rewrite。 允許重寫的最小aof檔案大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫

​ auto-aof-rewrite-min-size 64mb

aof rewrite 過程中,是否采取增量檔案同步政策,預設為 “yes”。當 child 程序在 rewrite AOF 檔案,每 32M 資料進行一次檔案同步,這樣可以減少 aof 大檔案寫入對磁盤的操作次數

​ aof-rewrite-incremental-fsync yes

aof檔案可能在尾部是不完整的,當 redis啟動的時候,aof檔案的資料被載入記憶體。重新開機可能發生在 redis 所在的主機作業系統當機後,尤其在 ext4檔案系統沒有加上 data=ordered 選項(redis當機或者異常終止不會造成尾部不完整現象。) 出現這種現象,可以選擇讓 redis退出,或者導入盡可能多的資料。 如果選擇的是yes,當截斷的 aof檔案被導入的時候,會自動釋出一個log給用戶端然後load。 如果是no,使用者必須手動 redis-check-aof 修複 AOF 檔案才可以。

aof-load-truncated yes

指定是否啟用虛拟記憶體機制,預設值為no,簡單的介紹一下,VM 機制将資料分頁存放,由Redis将通路量較少的頁即冷資料 swap 到磁盤上,通路多的頁面由磁盤自動換出到記憶體中。

​ vm-enabled no

虛拟記憶體檔案路徑,預設值為/tmp/redis.swap,不可多個Redis執行個體共享

​ vm-swap-file /tmp/redis.swap

将所有大于 vm-max-memory 的資料存入<code>虛拟記憶體</code>,無論 vm-max-memory 設定多小,所有索引資料都是記憶體存儲的( Redis 的索引資料 就是keys),也就是說,當 vm-max-memory 設定為 0 的時候,其實是所有 value 都存在于磁盤。預設值為 0

​ vm-max-memory 0

Redis swap 檔案分成了很多的 page,一個對象可以儲存在多個 page 上面,但一個 page 上不能被多個對象共享,vm-page-size是要根據存儲的 資料大小來設定的,作者建議如果存儲很多小對象,page大小最好設定為32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不 确定,就使用預設值

​ vm-page-size 32

設定swap檔案中的page數量,由于頁表(一種表示頁面空閑或使用的bitmap)是在放在記憶體中的,,在磁盤上每8個pages将消耗1byte的記憶體。

​ vm-pages 134217728

設定通路swap檔案的線程數,最好不要超過機器的核數,如果設定為0,那麼所有對swap檔案的操作都是串行的,可能會造成比較長時間的延遲。預設值為4

​ vm-max-threads 4

設定在向用戶端應答時,是否把較小的包合并為一個包發送,預設為開啟

​ glueoutputbuf yes

指定包含其它的配置檔案,可以在同一主機上多個Redis執行個體之間使用同一份配置檔案,而同時各個執行個體又擁有自己的特定配置檔案

​ include /path/to/local.conf

按鍵通知事件 鍵空間通知使得用戶端可以通過訂閱頻道或模式,來接收那些以某種方式改動了 Redis 資料集的事件。因為開啟鍵空間通知功能需要消耗一些 CPU ,是以在預設配置下,該功能處于關閉狀态。 notify-keyspace-events 的參數可以是以下字元的任意組合,它指定了伺服器該發送哪些類型的通知: K 鍵空間通知,所有通知以 keyspace@ 為字首 E 鍵事件通知,所有通知以 keyevent@ 為字首 g DEL 、 EXPIRE 、 RENAME 等類型無關的通用指令的通知 $ 字元串指令的通知 l 清單指令的通知 s 集合指令的通知 h 哈希指令的通知 z 有序集合指令的通知 x 過期事件:每當有過期鍵被删除時發送 e 驅逐(evict)事件:每當有鍵因為 maxmemory 政策而被删除時發送 A 參數 g$lshzxe 的别名 輸入的參數中至少要有一個 K 或者 E,否則的話,不管其餘的參數是什麼,都不會有任何 通知被分發。詳細使用可以參考 http://redis.io/topics/notifications

​ notify-keyspace-events ""

一個 Lua 腳本最長的執行時間,機關為毫秒,如果為0或負數表示無限執行時間,預設為5000

​ lua-time-limit 5000

當slave伺服器和master伺服器失去連接配接後,或者當資料正在複制傳輸的時候,如果此參數值設定<code>yes</code>,slave伺服器可以繼續接受用戶端的請求,否則,會傳回給請求的用戶端如下資訊<code>SYNC with master in progress</code>

​ slave-serve-stale-data yes

指定 slave 的優先級。在不隻1個 slave 存在的部署環境下,當 master 當機時,Redis Sentinel 會将 priority值最小的 slave 提升為 master。需要注意的是,若該配置項為 0,則對應的 slave 永遠不會自動提升為master。

​ slave-priority 100

設定當本機為 slave服務時,設定 master服務的IP位址及端口,在Redis啟動時,它會自動從master進行資料同步

​ <code>slaveof &lt;masterip&gt; &lt;masterport&gt;</code>

是否允許 slave 伺服器節點隻提供讀服務。 作為從伺服器,預設情況下是隻讀的(yes),可以修改成NO,用于寫(不建議)。

slave-read-only yes

是否使用socket方式複制資料。目前redis複制提供兩種方式,disk和socket。如果新的slave連上來或者重連的slave無法部分同步,就會執行全量同步,master會生成rdb檔案。有2種方式:disk方式是 master 建立一個新的程序把 rdb 檔案儲存到磁盤,再把磁盤上的 rdb檔案傳遞給 slave。socket 是 master建立一個新的程序,直接把rdb檔案以socket的方式發給slave。disk方式的時候,當一個 rdb 儲存的過程中,多個 slave 都能共享這個rdb檔案。socket的方式就的一個個slave順序複制。在磁盤速度緩慢,網速快的情況下推薦用 socket方式。

repl-diskless-sync no

diskless複制的延遲時間,防止設定為0。一旦複制開始,節點不會再接收新slave的複制請求直到下一個rdb傳輸。是以最好等待一段時間,等更多的slave連上來。

repl-diskless-sync-delay 5

slave根據指定的時間間隔向伺服器發送ping請求。時間間隔可以通過 repl_ping_slave_period 來設定,預設10秒。

repl-ping-slave-period 5

複制連接配接逾時時間。master和slave都有逾時時間的設定。master檢測到slave上次發送的時間超過repl-timeout,即認為slave離線,清除該slave資訊。slave檢測到上次和master互動的時間超過repl-timeout,則認為master離線。需要注意的是repl-timeout需要設定一個比repl-ping-slave-period更大的值,不然會經常檢測到逾時。

repl-timeout 60

指定向 slave 同步資料時,是否禁用 socket 的 NO_DELAY 選 項。 若配置為 <code>yes</code>,則禁用 NO_DELAY,則 <code>TCP</code> 協定棧會合并小包統一發送,這樣可以減少主從節點間的包數量并節省帶寬,但會增加資料同步到 <code>slave</code> 的時間。 若配置為 <code>no</code>,表明啟用 NO_DELAY,則 <code>TCP</code> 協定棧不會延遲小包的發送時機,這樣資料同步的延時會減少,但需要更大的帶寬。 通常情況下,應該配置為 <code>no</code> 以降低同步延時,但在主從節點間網絡負載已經很高的情況下,可以配置為 <code>yes</code>。

repl-disable-tcp-nodelay no

複制緩沖區大小,這是一個環形複制緩沖區,用來儲存最新複制的指令。這樣在slave離線的時候,不需要完全複制master的資料,如果可以執行部分同步,隻需要把緩沖區的部分資料複制給slave,就能恢複正常複制狀态。緩沖區的大小越大,slave離線的時間可以更長,複制緩沖區隻有在有slave連接配接的時候才配置設定記憶體。沒有slave的一段時間,記憶體會被釋放出來,預設1m。

repl-backlog-size 32mb

master沒有slave一段時間會釋放複制緩沖區的記憶體,repl-backlog-ttl用來設定該時間長度。機關為秒。

repl-backlog-ttl 3600

指定日志記錄級别,Redis總共支援四個級别: debug、verbose、notice(生産環境)、warning,預設為verbose

​ loglevel notice

日志記錄方式,預設為标準輸出,如果配置Redis為守護程序方式運作,而這裡又配置為日志記錄方式為标準輸出,則日志将會發送給/dev/null

​ logfile "6479.log"

延遲監控功能是用來監控redis中執行比較緩慢的一些操作,用 LATENCY 列印 redis執行個體在跑指令時的耗時圖表。隻記錄大于等于下邊設定的值的操作。0的話,就是關閉監視。預設延遲監控功能是關閉的,如果你需要打開,也可以通過CONFIG SET指令動态設定。

latency-monitor-threshold 0

slow log是用來記錄redis運作中執行比較慢的指令耗時。當指令的執行超過了指定時間,就記錄在slow log中,slog log儲存在記憶體中,是以沒有IO操作。 執行時間比slowlog-log-slower-than大的請求記錄到slowlog裡面,機關是微秒,是以1000000就是1秒。注意,負數時間會禁用慢查詢日志,而0則會強制記錄所有指令。

slowlog-log-slower-than 10000

慢查詢日志長度。當一個新的指令被寫進日志的時候,最老的那個記錄會被删掉。這個長度沒有限制。隻要有足夠的記憶體就行。你可以通過 SLOWLOG RESET 來釋放記憶體。

slowlog-max-len 128

當master服務設定了密碼保護時,slave服務連接配接 master的密碼

​ <code>masterauth &lt;master-password&gt;</code>

設定Redis連接配接密碼,如果配置了連接配接密碼,用戶端在連接配接Redis時需要通過<code>AUTH &lt;password&gt;</code> 指令提供密碼,預設關閉

​ requirepass foobared

Redis 的 List 内部是通過 quicklist 實作的(Redis 3.2 開始使用),quicklist 是一個雙向連結清單。 quicklist 的每個節點都是一個 ziplist。list-max-ziplist-size 就是用于配置 quicklist 中的每個節點的 ziplist 的大小。 當這個值配置為正數時表示 quicklist 每個節點的 ziplist 所包含的元素個數是一個确定的數量。 當 list-max-ziplist-size 為負數時表示限制每個 ziplist 的大小,具體有以下含義: -5:最大 64 kb 正常環境不推薦 -4:最大 32 kb 不推薦 -3:最大 16 kb 可能不推薦 -2:最大 8 kb 不錯 -1:最大 4kb 不錯 預設值為 -2,也是官方最推薦的值,當然你可以根據自己的實際情況進行修改。

list-max-ziplist-size -2

quicklist 中的 ziplist 節點會被壓縮。為了 push/pop 操作的高效性,quicklist 的頭和尾節點永遠都不會被壓縮。 list-compress-depth 選項用于控制 quicklist 中壓縮的節點的深度,下面的示例中加了中括号的節點表示未壓縮。 0 表示不對節點進行壓縮,這是預設的值 1 表示對頭和尾節點外的其他節點進行壓縮, [head]-&gt;node-&gt;node-&gt;…-&gt;node-&gt;[tail] 2 [head]-&gt;[next]-&gt;node-&gt;node-&gt;…-&gt;node-&gt;[prev]-&gt;[tail] 3 [head]-&gt;[next]-&gt;[next]-&gt;node-&gt;node-&gt;…-&gt;node-&gt;[prev]-&gt;[prev]-&gt;[tail] 依次類推

list-compress-depth 0

資料量 entries &lt;= list-max-ziplist-entries用 ziplist, entries &gt; list-max-ziplist-entries用 list。

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

entries &lt;= set-max-intset-entries 用 iniset, entries &gt; set-max-intset-entries 用 set。

set-max-intset-entries 512

entries &lt;= zset-max-ziplist-entries 用 ziplist entries &gt; zset-max-ziplist-entries 用 zset

zset-max-ziplist-entries 128

value &lt;= zset-max-ziplist-value 用 ziplist, value &gt; zset-max-ziplist-value 用 zset

zset-max-ziplist-value 640

value &lt;= hll-sparse-max-bytes 使用稀疏資料結構(sparse),大于hll-sparse-max-bytes使用稠密的資料結構(dense)。一個比16000大的value是幾乎沒用的,建議的value大概為3000。如果對CPU要求不高,對空間要求較高的,建議設定到10000左右

hll-sparse-max-bytes 3000

指定是否激活重置哈希,預設為開啟 Redis 将在每 100 毫秒時使用 1 毫秒的 CPU時間來對 redis 的 hash 表進行 rehash,可以降低記憶體的使用。當你的使用場景中,有非常嚴格的實時性需要,不能夠接受 Redis 時不時的對請求有2毫秒的延遲的話,把這項配置為 no。如果沒有這麼嚴格的實時性要求,可以設定為 yes,以便能夠盡可能快的釋放記憶體。

activerehashing yes

指定在超過一定的數量或者最大的元素超過某一臨界值時,采用一種特殊的雜湊演算法

​ hash-max-zipmap-entries 64

​ hash-max-zipmap-value 512

設定同一時間最大用戶端連接配接數,預設無限制,Redis可以同時打開的用戶端連接配接數為Redis程序可以打開的最大檔案描述符數,如果設定 maxclients 0,表示不作限制。當用戶端連接配接數到達限制時,Redis會關閉新的連接配接并向用戶端傳回max number of clients reached錯誤資訊

​ maxclients 128

當用戶端閑置多長時間後關閉連接配接,如果指定為0,表示關閉該功能

​ timeout 0

tcp keepalive參數。如果設定不為 0,就使用配置 tcp 的 SO_KEEPALIVE 值,使用 keepalive有兩個好處: 檢測挂掉的對端。降低中間裝置出問題而導緻網絡看似連接配接卻已經與對端端口連接配接異常的問題。 在Linux核心中,設定了 keepalive,redis 會定時給對端發送 ack。檢測到對端關閉需要兩倍的設定值。 如果值非0,機關是秒,表示将周期性的使用 SO_KEEPALIVE 檢測用戶端是否還處于健康狀态,避免伺服器一直阻塞,官方給出的建議值是 60 S。

tcp-keepalive 0

此參數确定了TCP連接配接中已完成隊列(完成三次握手之後)的長度, 當然此值必須不大于Linux系統定義的/proc/sys/net/core/somaxconn值,預設是511,而Linux的預設參數值是128。當系統并發量大并且用戶端速度緩慢的時候,可以将這二個參數一起參考設定。

​ tcp-backlog 511

對用戶端輸出緩沖進行限制可以強迫那些不從伺服器讀取資料的用戶端斷開連接配接,用來強制關閉傳輸緩慢的用戶端。 參數說明: <code>client-output-buffer-limit &lt;class&gt; &lt;hard limit&gt; &lt;soft limit&gt; &lt;soft seconds&gt;</code> class可以為以下: normal -&gt; normal clients including MONITOR clients slave -&gt; slave clients pubsub -&gt; clients subscribed to at least one pubsub channel or pattern 當 hard限制到了會立即被關閉用戶端。如果 soft 限制到了,會等 soft 秒。比如硬限制是32m,soft是16m,10 secs。到32m就立即斷,或者在16m以上停止了10 secs。設定成0就是關閉。 示例: 對于 normal client,第一個0表示取消 hard limit,第二個0和第三個0表示取消 soft limit,normal client 預設取消限制,因為如果沒有尋問,他們是不會接收資料的。 對于 slave client 和 MONITER client,如果 client-output-buffer一旦超過 256 mb,又或者超過 64mb 持續 60秒,那麼伺服器就會立即斷開用戶端連接配接。 對于 pubsub client,如果 client-output-buffer一旦超過 32mb,又或者超過 8mb 持續 60 秒,那麼伺服器就會立即斷開用戶端連接配接。

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

redis執行任務的頻率為1s除以hz。 redis内部排程(進行關閉timeout的用戶端,删除過期key等等)頻率,越大則排程頻率越高。設定成100以上會對CPU造成大壓力除非你對線上實時性要求很高。可以在1~500之間。

hz 10

windows 下不支援 <code>daemonzise no</code>

Redis預設不是以守護程序的方式運作,可以通過該配置項修改,使用yes啟用守護程序

windows 下不支援 <code>pidfile /var/run/redis.pid</code>

當Redis以守護程序方式運作時,Redis預設會把pid寫入/var/run/redis.pid檔案,可以通過pidfile指定

拷貝 redis.conf 副本進行修改
綁定 IP
修改 port
設定主伺服器密碼
開啟守護程序
由于本地通過 brew 安裝了4.0版本的 redis,是以需要修改下端口後啟動

啟動主機

測試主機讀寫

啟動從機

測試從機資料同步

測試從機寫拒絕

slave
master
Tips: 主從資料同步驗證完畢。
啟動指令:redis-sentinel sentinel.conf
[Redis] Redis 安裝部署
過程:

多個 sentinel 發現并确認 master 有問題

選舉出一個 sentinel 作為上司

選出一個 slave 作為 master

通知其餘 slave 成為新的 master 的 slave

通知用戶端主從變化

等待老的 master 複活成為新的 master 的 slave

建立 sentinel.conf 配置檔案

<code>1 主 2 從 3 哨兵</code>

主節點

投票(大于1半,至少3個)

主從備份,一個主故障,至少保證主從模式(讀寫分離),是以 2個從

首先補充一個從節點配置

<code>redis.6481.conf</code>

檢視<code>1主2從模式</code>節點資訊

sentine.16479.conf

同理配置 16480、16481 兩個哨兵節點

配置說明

Every long running process should have a well-defined working directory. For Redis Sentinel to chdir to /tmp at startup is the simplest thing for the process to don’t interfere with administrative tasks such as unmounting filesystems. 存儲目錄

dir

Specify the log file name. Also the empty string can be used to force Sentinel to log on the standard output. Note that if you use standard output for logging but daemonize, logs will be sent to /dev/null 日志

logfile "16479.log"

The port that this sentinel instance will run on 端口

port

By default Redis Sentinel does not run as a daemon. Use ‘yes’ if you need it. Note that Redis will write a pid file in /var/run/redis-sentinel.pid when daemonized. 是否守護程序執行

daemonize yes

When running daemonized, Redis Sentinel writes a pid file in /var/run/redis-sentinel.pid by default. You can specify a custom pid file location here. 執行檔案

pidfile "/var/run/redis-sentinel.16479.pid"

Tells Sentinel to monitor this master, and to consider it in O_DOWN (Objectively Down) state only if at least sentinels agree. Note that whatever is the ODOWN quorum, a Sentinel will require to be elected by the majority of the known Sentinels in order to start a failover, so no failover can be performed in minority. Replicas are auto-discovered, so you don’t need to specify replicas in any way. Sentinel itself will rewrite this configuration file adding the replicas using additional configuration options. Also note that the configuration file is rewritten when a replica is promoted to master. Note: master name should not include special characters or spaces. The valid charset is A-z 0-9 and the three characters “.-_”. 監控節點配置

sentinel monitor

運作過後會自動更新位對應的節點 ID

<code>sentinel myid 787c68bbb3e08a19491238c34176fb2ce72430ff</code>

下線主節點

下線主節點 <code>kill -9 74394</code>

檢視6480節點狀态 <code>./src/redis-cli -p 6480 info</code>

檢視目前主節點 6481 狀态 <code>./src/redis-cli -p 6481 info</code>

可以看到完成了主從切換。我們恢複下線的節點 6479,再觀察下能否被目前主節點檢測到:

再次檢視節點 6481 節點資訊

對應的6479節點不能再進行寫入操作

6481 成為主節點後可以正常寫入

至此,Redis 安裝配置及常見部署方式已經介紹完畢。

mac os 安裝 redis

SpringBoot進階教程(五十八)整合Redis之Sentinel哨兵模式

Redis 配置詳解(五)

Linux下redis配置參數說明

[Redis] Redis 安裝部署

繼續閱讀