直到 Redis 5.0,Redis 才增加了一個配置 replica-ignore-maxmemory,默認從庫超過 maxmemory 不會淘汰數據,才解決了此問題。
好了,以上這些就是「日常運維」Redis 需要注意的,你可以對各個配置項查漏補缺,看有哪些是需要優化的。
接下來,我們來看一下,保障 Redis「安全」都需要注意哪些問題。
Redis 安全如何保證?
無論如何,在互聯網時代,安全問題一定是我們需要隨時警戒的。
你可能聽說過 Redis 被注入可執行腳本,然后拿到機器 root 權限的安全問題,都是因為在部署 Redis 時,沒有把安全風險注意起來。
針對這方面,我給你的建議是:
不要把 Redis 部署在公網可訪問的服務器上
部署時不使用默認端口 6379
以普通用戶啟動 Redis 進程,禁止 root 用戶啟動
限制 Redis 配置文件的目錄訪問權限
推薦開啟密碼認證
禁用/重命名危險命令(KEYS/FLUSHALL/FLUSHDB/CONFIG/EVAL)
只要你把這些做到位,基本上就可以保證 Redis 的安全風險在可控范圍內。
至此,我們分析了 Redis 在內存、性能、可靠性、日常運維方面的實踐優化。
除了以上這些,你還需要做到提前「預防」。
如何預防 Redis 問題?
要想提前預防 Redis 問題,你需要做好以下兩個方面:
合理的資源規劃
完善的監控預警
先來說資源規劃。
在部署 Redis 時,如果你可以提前做好資源規劃,可以避免很多因為資源不足產生的問題。這方面我給你的建議有以下 3 點:
保證機器有足夠的 CPU、內存、帶寬、磁盤資源
提前做好容量規劃,主庫機器預留一半內存資源,防止主從機器網絡故障,引發大面積全量同步,導致主庫機器內存不足的問題
單個實例內存建議控制在 10G 以下,大實例在主從全量同步、RDB 備份時有阻塞風險
再來看監控如何做。
監控預警是提高穩定性的重要環節,完善的監控預警,可以把問題提前暴露出來,這樣我們才可以快速反應,把問題最小化。
這方面我給你的建議是:
做好機器 CPU、內存、帶寬、磁盤監控,資源不足時及時報警,任意資源不足都會影響 Redis 性能
設置合理的 slowlog 閾值,并對其進行監控,slowlog 過多及時報警
監控組件采集 Redis INFO 信息時,采用長連接,避免頻繁的短連接
做好實例運行時監控,重點關注 expired_keys、evicted_keys、latest_fork_usec 指標,這些指標短時突增可能會有阻塞風險
總結
好了,總結一下,這篇文章我帶你分析了 Redis 實踐的優化路徑,其中包括內存資源、高性能、高可靠、日常運維、資源規劃、監控、安全 7 個維度。
Hirschmann MM2-2FXM3/2TX1 140CPU21300 140CPU42401 140CPU42402 140CPU43412A
140CPU43412 140CPU53414A 140CPU53414B 140CPU53414 140CPU65160
140CRA21110 140CRA21120 140CRA21210 140CRA93100 140CRA93101
140CRA93200 140CRP81100 140CRP93100 140CRP93200 140DAI34000
140DAI35300 140DAI44000 140DAI45300 140DAI54000 140DAI54300
140DAI55300 140DAI74000 140DAI75300 140DAM59000 140DAO84000
140DAO84010 140DAO84200 140DAO84210 140DAO84220 140DAO85300
140DDI15310 140DDI35300 140DDI35310 140DDI36400 140DDI67300
140DDI75300 140DDI84100 140DDI84300 140DDI85300 140DDM39000
140DDM69000 140DDO15310 140DDO35300 140DDO35310 140DDO36400
140DDO84300C 140DDO84300 140DDO88500 140DRA84000 140DRC83000
140DVO85300 140EHC10500 140EHC20200 140ESI06210
140HLI34000 140IFC020 140MMB10200 140MSB10100 140MSC10100
140NOA61110 140NOE21100 140NOE21110 140NOE25100 140NOE25110
140NOE31100 140NOE77100 140NOE77101 140NOE77110
140NOE77111 140NOL91120 140NOM21100 140NOM21100 140NOM21200
140NOP91100 140Q8PENETSW01 140QSPXM 140SHS94500 140XBE10000
140XBP00300 140XBP00400 140XBP00600 140XBP01000 140XBP01600
140XCA71703 140XCP40100 140XCP51000 140XSM00200 140XSM01000
140XTS00100 140XTS00200 140XTS00203 140XTS00206 140XTS00212
140XTS01206 140XTS01212 140XTX00200
140CPU67160 140CPU65160 140CPU65150
Hirschmann MM2-2FXM3/2TX1 馬達SGMG-13ASAC
編碼器UTMAH-B15ASB
ECF板086348-001
電源板086277-001
SC510 3BSE003832R1
3HAC023195-001
6ES7634-2BF02-OAE3
DSQC500
A20B-2900-0620
1747-L553
1756-L61
140CPU11303
FBM242
PANASONIC MSM022AJA
Beckhoff BK4000
3HAC12815-1 DSQC601
UDK2120
EWS300P-24
4E0011.01-090
1.電源模塊;1756-PB75R/A
2.系統冗余模塊;AB;1756-SRM
3.1756-CNBR
4.通訊模塊;1756-ENBT
5.適配器;1756-PSCA2/A
6.1756-IF6CIS
7.1756-IF6I
8.1756-0F6CI
9.1756-IR6I
10.1756-IB16I
11.1756-OB16I
12.Modbus通訊模塊;MV156MNET
13.C NET I/F;1784PCC
14.C NET I/F;1784PCICS
15.空板;1756N2
16.C NET tap;1786TPYS
ADEPT 30350-10350
WAGO通訊模塊 750-346
WAGO電源模塊 750-602
WAGO8輸入模塊 750-430
WAGO8輸出模塊 750-530
WAGO終端模塊 750-600
SGDH-05DE-OY
3C509B
A06B-6058-H230
A06B-0227-B101
A06B-0128-B575
A06B-6111-H006#550
西門子 RMS-TSIG-TZ
DSQC354
DSQC352
DAI03
8520-CPUX1
HVR02.2-W010N
HDS03.2-W100N
ABB DAI03
施耐德 NW-RR85-001
AB 8520-CPUX1
施耐德 NW-RR85-001
APACS+/QUADLOG STANDARD ANALOG I/O MODULE 32 QLSAMBAN
UPH:39SAIAAN
APACS+/QUADLOG STANDARD ANALOG INPUT MODULE 39SAIAAN
UPH:39SAMCAN
16137-118
A06B-6079-H106
A860-0203-T013
A06B-6110-H006
A860-2020-T301
A06B-6102-H215#520
E300(170)/5 MRE-GDE8-1
MKS GV150
MKS BY 150
6AV3627-1QL01-0AX0 TP27-10
6AV6545-0CC10-0AX0
軟管 3HNM 01670-1
IPM2-P0904HA
140ACI04000
遠程擴展卡3A99190G01 5PCRR3 SUB11
I/O卡 型號規格:9QAW21 3 NX104287B0007 8450815 C1778178 擴展卡
型號規格:3A99158 G01 4PCPL1 SUB8
ABB DSBC176
ABB DSDP170
ABB DSDP150
ABB Drivewindow 2.x,USB Connetion Kit for laptop PC
ABB NPCT-01C
ABB PP C905 AE101
ABB ASE02 UD C920 AE01
QPI-ABR-201
2711K6C1
DSQC 608 3HAC12934-1
DSQC 604 3HAC12928-1
DSQC 602 3HAC12816-1
DSQC 609 3HAC14178-1
140CRP81100
JEPMC-MC400
505-6850-A
505-6850-B
ACS510-01-060A-4
5X00070G04
3A99158G01
5X00105G07 西屋
ACS-BRK-D
AZI-132B
A06B-6089-H106
ABB DSDX451
DSDX452
DSPC170
數字式操作器RP-001
4256A84G03
R88M-W30010T-S2
490NRP95400
3UX1423
1394-SJT10-C-RL
A06B-6102-H230#520
RMS-TSIG-TZ-C
3HAB9443-1
連接板0-60066-1
I/O板0-60067-1
140CHS21000
140CPS11420
140CPU43412
140CHS11000
140NOE77101
140CRP93200
140CRA93200
490NRP25300
ABLM-133-1
INR-244-272
ACM Transition Board (16147-51)
FOXBORO P0912DV REV-C
GP2500-TC41-24V
6SN1118-0NK00-0AA2
1394C-SJT05-T
1756L55M12
1756L55M13
1756L55M14
RAC3.5-150-460-A00-W1-220
1336F-B030-AA-EN
CACR-HR02BAB12
3805E
3664
3503E
3604E
3008
JEPMC-MC400
CACR-HR02BAB12
A06B-6110-H006 A06B-6114-H106