Redis6.2.6生產(chǎn)環(huán)境redis.conf單機配置
Redis 生產(chǎn)環(huán)境配置詳解
在實際生產(chǎn)環(huán)境中,為了保障 Redis 的穩(wěn)定性和高性能,我們往往需要對默認配置進行一系列優(yōu)化。本篇博文將以一份經(jīng)過優(yōu)化的 Redis 配置文件為例,從基礎網(wǎng)絡設置、持久化、復制、內(nèi)存管理、AOF 持久化、性能調(diào)優(yōu)以及監(jiān)控限制等多個方面進行詳細講解。
下面給出的是一份示例配置文件,并附上詳細注釋說明:
配置文件示例
##################### # Redis 配置優(yōu)化文件 # 適用于生產(chǎn)環(huán)境 ##################### # 綁定地址,允許所有 IP 訪問,生產(chǎn)環(huán)境建議改為內(nèi)網(wǎng) IP bind 192.168.1.1 # 保護模式,建議開啟 (yes) 以增強安全性 protected-mode yes # 監(jiān)聽端口 port 6379 # TCP 連接隊列大小 tcp-backlog 511 # 連接超時時間(0 代表不超時) timeout 0 # TCP ?;顣r間(秒),建議設大一些,避免連接被防火墻誤斷開 tcp-keepalive 300 # 后臺運行 daemonize yes # 進程 PID 文件路徑 pidfile /data/redis/redis_6379.pid # 日志級別 (debug | verbose | notice | warning) loglevel notice # 日志文件路徑(空值表示輸出到標準輸出) logfile "/data/app/redis/logs/redis-server.log" # 數(shù)據(jù)庫數(shù)量(默認16個,視業(yè)務需求調(diào)整) databases 16 # 顯示 Redis 啟動 Logo(關(guān)閉可減少日志干擾) always-show-logo no
基礎網(wǎng)絡與進程管理
bind 與 protected-mode配置文件中指定了
bind 192.168.1.1
,僅允許該 IP 訪問 Redis 服務。對于生產(chǎn)環(huán)境,建議使用內(nèi)網(wǎng) IP 限制訪問范圍。同時開啟protected-mode
(保護模式),可以防止未經(jīng)授權(quán)的訪問。端口與連接設置使用
port 6379
設定 Redis 監(jiān)聽端口,tcp-backlog
則設定了連接隊列的長度。timeout 0
表示不自動斷開空閑連接,而tcp-keepalive 300
保持長連接的活性,避免中間設備(如防火墻)因空閑超時斷開連接。后臺運行與日志記錄通過
daemonize yes
使 Redis 后臺運行,同時定義了 PID 文件路徑(pidfile
)以及日志文件路徑和日志級別。這些設置有助于管理進程和問題排查。
RDB 持久化配置
Redis 提供 RDB 持久化方式,可以定時保存內(nèi)存數(shù)據(jù)到磁盤。配置文件中針對 RDB 做了如下優(yōu)化:
##################### # RDB 持久化 ##################### # RDB 失敗時阻止寫入,避免數(shù)據(jù)損壞 stop-writes-on-bgsave-error yes # 啟用 RDB 數(shù)據(jù)壓縮 rdbcompression yes # 啟用 RDB 數(shù)據(jù)校驗 rdbchecksum yes # RDB 文件名 dbfilename dump.rdb # 關(guān)閉 RDB 刪除同步文件,防止誤刪除 rdb-del-sync-files no # RDB 文件存儲目錄,建議設為 SSD 盤 dir /data/app/redis/data/
數(shù)據(jù)完整性保護使用
stop-writes-on-bgsave-error yes
,一旦 RDB 持久化出現(xiàn)錯誤,則停止寫入操作,防止數(shù)據(jù)不一致。數(shù)據(jù)壓縮和校驗開啟
rdbcompression
和rdbchecksum
可有效減小 RDB 文件體積,并通過校驗保證數(shù)據(jù)完整性。文件存儲目錄將 RDB 文件存儲在
/data/app/redis/data/
,建議部署在 SSD 上以獲得更高的 I/O 性能。
復制(主從同步)設置
在高可用架構(gòu)中,主從復制是常用手段。配置文件中針對復制功能作了如下設置:
##################### # 復制(主從同步) ##################### # 允許副本在斷開主庫時仍然提供只讀服務 replica-serve-stale-data yes # 副本節(jié)點只讀模式 replica-read-only yes # 關(guān)閉無磁盤同步(默認使用磁盤同步) repl-diskless-sync no # 無磁盤同步的延遲 repl-diskless-sync-delay 5 # 關(guān)閉無磁盤加載 repl-diskless-load disabled # 保持默認 TCP nodelay 配置 repl-disable-tcp-nodelay no # 副本優(yōu)先級(越小越容易成為主庫) replica-priority 100
副本服務可用性
replica-serve-stale-data yes
允許當副本與主庫斷開時繼續(xù)提供只讀服務,保證業(yè)務不中斷。同步方式默認采用磁盤同步,通過調(diào)整
repl-diskless-sync-delay
來控制延遲,保持數(shù)據(jù)傳輸?shù)姆€(wěn)定性。選主策略配置
replica-priority
,數(shù)值越低的副本在主庫故障時更容易被選舉為新的主庫。
內(nèi)存管理
內(nèi)存管理是 Redis 性能的核心部分,配置文件中提供了靈活的內(nèi)存管理策略:
##################### # 內(nèi)存管理 ##################### # 默認不限制內(nèi)存,可根據(jù)業(yè)務需求調(diào)整 maxmemory 0 # 不驅(qū)逐數(shù)據(jù),可改為 allkeys-lru maxmemory-policy noeviction # 關(guān)閉惰性刪除,避免額外 CPU 開銷 lazyfree-lazy-eviction no # 關(guān)閉惰性過期 lazyfree-lazy-expire no # 關(guān)閉惰性刪除 lazyfree-lazy-server-del no # 關(guān)閉副本惰性清理 replica-lazy-flush no # 關(guān)閉 OOM 調(diào)整 oom-score-adj no # 僅在 OOM 保護時啟用 oom-score-adj-values 0 200 800
內(nèi)存限制與策略
maxmemory 0
表示默認無限制內(nèi)存,適用于內(nèi)存資源充足的環(huán)境;同時設置maxmemory-policy noeviction
,表示在內(nèi)存達到上限時不驅(qū)逐數(shù)據(jù)。實際生產(chǎn)中,可以根據(jù)業(yè)務需求選用如allkeys-lru
等驅(qū)逐策略。惰性刪除關(guān)閉各種惰性刪除功能(lazyfree-* 配置)可以減少 CPU 額外開銷,不過可能會使刪除操作較為同步執(zhí)行,需根據(jù)業(yè)務場景權(quán)衡。
AOF 持久化
AOF(Append Only File)是 Redis 的另一種持久化方案,能提供更高的數(shù)據(jù)安全性。配置文件中對 AOF 進行如下設置:
##################### # AOF 持久化 ##################### # 啟用 AOF 持久化 appendonly yes # AOF 文件名 appendfilename "appendonly.aof" # 每秒同步一次,性能和安全的折中方案 appendfsync everysec # 重寫時是否關(guān)閉同步 no-appendfsync-on-rewrite no # 觸發(fā) AOF 重寫的比例 auto-aof-rewrite-percentage 100 # 觸發(fā) AOF 重寫的最小大小 auto-aof-rewrite-min-size 64mb # 允許加載截斷的 AOF aof-load-truncated yes # AOF 兼容 RDB 頭部,減少重啟時間 aof-use-rdb-preamble yes
數(shù)據(jù)安全與性能開啟
appendonly yes
并使用appendfsync everysec
,在數(shù)據(jù)安全和性能之間取得平衡;每秒同步一次 AOF 文件可以大幅降低數(shù)據(jù)丟失風險。自動重寫配置
auto-aof-rewrite-percentage
和auto-aof-rewrite-min-size
,確保 AOF 文件不會無限制增大,同時利用增量重寫減少重寫期間的性能損耗。兼容性與恢復啟用
aof-use-rdb-preamble
可以在重啟時利用 RDB 頭部數(shù)據(jù)加快加載速度,提升恢復效率。
性能優(yōu)化設置
為了在高并發(fā)環(huán)境中獲得更好的響應速度,Redis 在配置文件中還做了一系列性能調(diào)優(yōu):
##################### # 性能優(yōu)化 ##################### # 調(diào)高 Hz 頻率,提高響應速度 hz 50 # 動態(tài)調(diào)整 Hz dynamic-hz yes # AOF 重寫時增量同步 aof-rewrite-incremental-fsync yes # RDB 保存時增量同步 rdb-save-incremental-fsync yes # 啟用 jemalloc 線程優(yōu)化內(nèi)存管理 jemalloc-bg-thread yes
Hz 頻率默認的事件處理頻率(hz)被調(diào)高到 50 次/秒,并啟用動態(tài)調(diào)整,確保在負載波動時依然能夠快速響應客戶端請求。
增量同步針對 AOF 重寫和 RDB 保存啟用增量同步,能有效減少磁盤 I/O 的壓力,提高整體性能。
內(nèi)存分配優(yōu)化啟用 jemalloc 的后臺線程(
jemalloc-bg-thread yes
)進一步優(yōu)化內(nèi)存分配和釋放,適用于高并發(fā)場景。
限制與監(jiān)控
為了及時發(fā)現(xiàn)問題并防止意外情況發(fā)生,Redis 提供了一系列監(jiān)控和限制設置:
##################### # 限制與監(jiān)控 ##################### # 慢查詢閾值(微秒) slowlog-log-slower-than 10000 # 慢查詢?nèi)罩咀畲髼l數(shù) slowlog-max-len 128 # 關(guān)閉延遲監(jiān)控 latency-monitor-threshold 0 # 關(guān)閉 key 事件通知 notify-keyspace-events "" # 普通客戶端無限制 client-output-buffer-limit normal 0 0 0 # 副本節(jié)點限制 client-output-buffer-limit replica 256mb 64mb 60 # PubSub 限制 client-output-buffer-limit pubsub 32mb 8mb 60
慢查詢?nèi)罩?/strong>通過設置
slowlog-log-slower-than 10000
(單位為微秒)來記錄執(zhí)行時間超過 10 毫秒的命令,有助于定位性能瓶頸。客戶端輸出緩沖區(qū)分別對普通客戶端、復制節(jié)點和 PubSub 模塊設定了緩沖區(qū)大小限制,防止異常情況(如客戶端阻塞)導致內(nèi)存暴漲。
其他參數(shù)
最后,配置文件中還定義了一些額外參數(shù),例如 RDB 保存條件和 TCP 相關(guān)參數(shù),以進一步細化 Redis 的行為:
##################### # 其他參數(shù) ##################### # RDB 觸發(fā)條件 save 900 1 300 10 60 10000 # TCP 連接隊列大小 tcp-backlog 511 # TCP ?;顣r間(秒) tcp-keepalive 300
這些參數(shù)能根據(jù)具體業(yè)務場景對數(shù)據(jù)保存頻率、網(wǎng)絡連接隊列等進行微調(diào),從而達到性能和可靠性之間的平衡。
完整配置
######################################### # Redis 配置優(yōu)化文件 # 適用于生產(chǎn)環(huán)境 ######################################### # 綁定地址,允許所有 IP 訪問,生產(chǎn)環(huán)境建議改為內(nèi)網(wǎng) IP bind 192.168.1.1 # 保護模式,建議開啟 (yes) 以增強安全性 protected-mode yes # 監(jiān)聽端口 port 6379 # TCP 連接隊列大小 tcp-backlog 511 # 連接超時時間(0 代表不超時) timeout 0 # TCP 保活時間(秒),建議設大一些,避免連接被防火墻誤斷開 tcp-keepalive 300 # 后臺運行 daemonize yes # 進程 PID 文件路徑 pidfile /data/app/redis/redis_6379.pid # 日志級別 (debug | verbose | notice | warning) loglevel notice # 日志文件路徑(空值表示輸出到標準輸出) logfile "/data/redis/logs/redis-server.log" # 數(shù)據(jù)庫數(shù)量(默認16個,視業(yè)務需求調(diào)整) databases 16 # 顯示 Redis 啟動 Logo(關(guān)閉可減少日志干擾) always-show-logo no ######################################### # RDB 持久化 ######################################### # RDB 失敗時阻止寫入,避免數(shù)據(jù)損壞 stop-writes-on-bgsave-error yes # 啟用 RDB 數(shù)據(jù)壓縮 rdbcompression yes # 啟用 RDB 數(shù)據(jù)校驗 rdbchecksum yes # RDB 文件名 dbfilename dump.rdb # 關(guān)閉 RDB 刪除同步文件,防止誤刪除 rdb-del-sync-files no # RDB 文件存儲目錄,建議設為 SSD 盤 dir /data/app/redis/data/ ######################################### # 復制(主從同步) ######################################### # 允許副本在斷開主庫時仍然提供只讀服務 replica-serve-stale-data yes # 副本節(jié)點只讀模式 replica-read-only yes # 關(guān)閉無磁盤同步(默認使用磁盤同步) repl-diskless-sync no # 無磁盤同步的延遲 repl-diskless-sync-delay 5 # 關(guān)閉無磁盤加載 repl-diskless-load disabled # 保持默認 TCP nodelay 配置 repl-disable-tcp-nodelay no # 副本優(yōu)先級(越小越容易成為主庫) replica-priority 100 ######################################### # 內(nèi)存管理 ######################################### # 默認不限制內(nèi)存,可根據(jù)業(yè)務需求調(diào)整 maxmemory 0 # 不驅(qū)逐數(shù)據(jù),可改為 allkeys-lru maxmemory-policy noeviction # 關(guān)閉惰性刪除,避免額外 CPU 開銷 lazyfree-lazy-eviction no # 關(guān)閉惰性過期 lazyfree-lazy-expire no # 關(guān)閉惰性刪除 lazyfree-lazy-server-del no # 關(guān)閉副本惰性清理 replica-lazy-flush no # 關(guān)閉 OOM 調(diào)整 oom-score-adj no # 僅在 OOM 保護時啟用 oom-score-adj-values 0 200 800 ######################################### # AOF 持久化 ######################################### # 啟用 AOF 持久化 appendonly yes # AOF 文件名 appendfilename "appendonly.aof" # 每秒同步一次,性能和安全的折中方案 appendfsync everysec # 重寫時是否關(guān)閉同步 no-appendfsync-on-rewrite no # 觸發(fā) AOF 重寫的比例 auto-aof-rewrite-percentage 100 # 觸發(fā) AOF 重寫的最小大小 auto-aof-rewrite-min-size 64mb # 允許加載截斷的 AOF aof-load-truncated yes # AOF 兼容 RDB 頭部,減少重啟時間 aof-use-rdb-preamble yes ######################################### # 性能優(yōu)化 ######################################### # 調(diào)高 Hz 頻率,提高響應速度 hz 50 # 動態(tài)調(diào)整 Hz dynamic-hz yes # AOF 重寫時增量同步 aof-rewrite-incremental-fsync yes # RDB 保存時增量同步 rdb-save-incremental-fsync yes # 啟用 jemalloc 線程優(yōu)化內(nèi)存管理 jemalloc-bg-thread yes ######################################### # 限制與監(jiān)控 ######################################### # 慢查詢閾值(微秒) slowlog-log-slower-than 10000 # 慢查詢?nèi)罩咀畲髼l數(shù) slowlog-max-len 128 # 關(guān)閉延遲監(jiān)控 latency-monitor-threshold 0 # 關(guān)閉 key 事件通知 notify-keyspace-events "" # 普通客戶端無限制 client-output-buffer-limit normal 0 0 0 # 副本節(jié)點限制 client-output-buffer-limit replica 256mb 64mb 60 # PubSub 限制 client-output-buffer-limit pubsub 32mb 8mb 60 ######################################### # 其他參數(shù) ######################################### # RDB 觸發(fā)條件 save 900 1 300 10 60 10000 # TCP 連接隊列大小 tcp-backlog 511 # TCP ?;顣r間(秒) tcp-keepalive 300
總結(jié)
本篇博文詳細解析了一份針對生產(chǎn)環(huán)境優(yōu)化后的 Redis 配置文件。通過合理設置網(wǎng)絡參數(shù)、持久化策略、復制機制、內(nèi)存管理和性能調(diào)優(yōu),Redis 能夠在高并發(fā)和大數(shù)據(jù)量場景下保持穩(wěn)定高效運行。
實際部署時,應根據(jù)自身的硬件條件和業(yè)務特點對各項參數(shù)進行適當調(diào)整。對于環(huán)境安全、數(shù)據(jù)可靠性和性能優(yōu)化等方面,建議參考官方文檔和社區(qū)最佳實踐,不斷完善和調(diào)優(yōu)配置。
到此這篇關(guān)于Redis6.2.6生產(chǎn)環(huán)境redis.conf單機配置的文章就介紹到這了,更多相關(guān)Redis redis.conf配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis特殊數(shù)據(jù)類型Geospatial地理空間
這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類型Geospatial地理空間,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05