Redis 6.2.6 生產環境單機配置詳解redis.conf

文章目錄

  • Redis 生產環境配置詳解
  • 配置文件示例
  • 基礎網絡與進程管理
  • RDB 持久化配置
  • 復制(主從同步)設置
  • 內存管理
  • AOF 持久化
  • 性能優化設置
  • 限制與監控
  • 其他參數
  • 完整配置
  • 總結


Redis 生產環境配置詳解

在實際生產環境中,為了保障 Redis 的穩定性和高性能,我們往往需要對默認配置進行一系列優化。本篇博文將以一份經過優化的 Redis 配置文件為例,從基礎網絡設置、持久化、復制、內存管理、AOF 持久化、性能調優以及監控限制等多個方面進行詳細講解。

下面給出的是一份示例配置文件,并附上詳細注釋說明:


配置文件示例

#####################
# Redis 配置優化文件
# 適用于生產環境
###################### 綁定地址,允許所有 IP 訪問,生產環境建議改為內網 IP
bind 192.168.1.1# 保護模式,建議開啟 (yes) 以增強安全性
protected-mode yes# 監聽端口
port 6379# TCP 連接隊列大小
tcp-backlog 511# 連接超時時間(0 代表不超時)
timeout 0# TCP 保活時間(秒),建議設大一些,避免連接被防火墻誤斷開
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"# 數據庫數量(默認16個,視業務需求調整)
databases 16# 顯示 Redis 啟動 Logo(關閉可減少日志干擾)
always-show-logo no

基礎網絡與進程管理

  • bind 與 protected-mode
    配置文件中指定了 bind 192.168.1.1,僅允許該 IP 訪問 Redis 服務。對于生產環境,建議使用內網 IP 限制訪問范圍。同時開啟 protected-mode(保護模式),可以防止未經授權的訪問。

  • 端口與連接設置
    使用 port 6379 設定 Redis 監聽端口,tcp-backlog 則設定了連接隊列的長度。timeout 0 表示不自動斷開空閑連接,而 tcp-keepalive 300 保持長連接的活性,避免中間設備(如防火墻)因空閑超時斷開連接。

  • 后臺運行與日志記錄
    通過 daemonize yes 使 Redis 后臺運行,同時定義了 PID 文件路徑(pidfile)以及日志文件路徑和日志級別。這些設置有助于管理進程和問題排查。


RDB 持久化配置

Redis 提供 RDB 持久化方式,可以定時保存內存數據到磁盤。配置文件中針對 RDB 做了如下優化:

#####################
# RDB 持久化
#####################
# RDB 失敗時阻止寫入,避免數據損壞
stop-writes-on-bgsave-error yes
# 啟用 RDB 數據壓縮
rdbcompression yes
# 啟用 RDB 數據校驗
rdbchecksum yes
# RDB 文件名
dbfilename dump.rdb
# 關閉 RDB 刪除同步文件,防止誤刪除
rdb-del-sync-files no
# RDB 文件存儲目錄,建議設為 SSD 盤
dir /data/app/redis/data/
  • 數據完整性保護
    使用 stop-writes-on-bgsave-error yes,一旦 RDB 持久化出現錯誤,則停止寫入操作,防止數據不一致。

  • 數據壓縮和校驗
    開啟 rdbcompressionrdbchecksum 可有效減小 RDB 文件體積,并通過校驗保證數據完整性。

  • 文件存儲目錄
    將 RDB 文件存儲在 /data/app/redis/data/,建議部署在 SSD 上以獲得更高的 I/O 性能。


復制(主從同步)設置

在高可用架構中,主從復制是常用手段。配置文件中針對復制功能作了如下設置:

#####################
# 復制(主從同步)
#####################
# 允許副本在斷開主庫時仍然提供只讀服務
replica-serve-stale-data yes 
# 副本節點只讀模式
replica-read-only yes
# 關閉無磁盤同步(默認使用磁盤同步)
repl-diskless-sync no
# 無磁盤同步的延遲
repl-diskless-sync-delay 5 
# 關閉無磁盤加載
repl-diskless-load disabled
# 保持默認 TCP nodelay 配置
repl-disable-tcp-nodelay no
# 副本優先級(越小越容易成為主庫)
replica-priority 100 
  • 副本服務可用性
    replica-serve-stale-data yes 允許當副本與主庫斷開時繼續提供只讀服務,保證業務不中斷。

  • 同步方式
    默認采用磁盤同步,通過調整 repl-diskless-sync-delay 來控制延遲,保持數據傳輸的穩定性。

  • 選主策略
    配置 replica-priority,數值越低的副本在主庫故障時更容易被選舉為新的主庫。


內存管理

內存管理是 Redis 性能的核心部分,配置文件中提供了靈活的內存管理策略:

#####################
# 內存管理
#####################
# 默認不限制內存,可根據業務需求調整
maxmemory 0
# 不驅逐數據,可改為 allkeys-lru
maxmemory-policy noeviction
# 關閉惰性刪除,避免額外 CPU 開銷
lazyfree-lazy-eviction no 
# 關閉惰性過期
lazyfree-lazy-expire no 
# 關閉惰性刪除
lazyfree-lazy-server-del no 
# 關閉副本惰性清理
replica-lazy-flush no
# 關閉 OOM 調整
oom-score-adj no 
# 僅在 OOM 保護時啟用
oom-score-adj-values 0 200 800
  • 內存限制與策略
    maxmemory 0 表示默認無限制內存,適用于內存資源充足的環境;同時設置 maxmemory-policy noeviction,表示在內存達到上限時不驅逐數據。實際生產中,可以根據業務需求選用如 allkeys-lru 等驅逐策略。

  • 惰性刪除
    關閉各種惰性刪除功能(lazyfree-* 配置)可以減少 CPU 額外開銷,不過可能會使刪除操作較為同步執行,需根據業務場景權衡。


AOF 持久化

AOF(Append Only File)是 Redis 的另一種持久化方案,能提供更高的數據安全性。配置文件中對 AOF 進行如下設置:

#####################
# AOF 持久化
#####################
# 啟用 AOF 持久化
appendonly yes 
# AOF 文件名
appendfilename "appendonly.aof" 
# 每秒同步一次,性能和安全的折中方案
appendfsync everysec
# 重寫時是否關閉同步
no-appendfsync-on-rewrite no
# 觸發 AOF 重寫的比例
auto-aof-rewrite-percentage 100 
# 觸發 AOF 重寫的最小大小
auto-aof-rewrite-min-size 64mb
# 允許加載截斷的 AOF
aof-load-truncated yes
# AOF 兼容 RDB 頭部,減少重啟時間
aof-use-rdb-preamble yes 
  • 數據安全與性能
    開啟 appendonly yes 并使用 appendfsync everysec,在數據安全和性能之間取得平衡;每秒同步一次 AOF 文件可以大幅降低數據丟失風險。

  • 自動重寫
    配置 auto-aof-rewrite-percentageauto-aof-rewrite-min-size,確保 AOF 文件不會無限制增大,同時利用增量重寫減少重寫期間的性能損耗。

  • 兼容性與恢復
    啟用 aof-use-rdb-preamble 可以在重啟時利用 RDB 頭部數據加快加載速度,提升恢復效率。


性能優化設置

為了在高并發環境中獲得更好的響應速度,Redis 在配置文件中還做了一系列性能調優:

#####################
# 性能優化
#####################
# 調高 Hz 頻率,提高響應速度
hz 50
# 動態調整 Hz
dynamic-hz yes 
# AOF 重寫時增量同步
aof-rewrite-incremental-fsync yes
# RDB 保存時增量同步
rdb-save-incremental-fsync yes 
# 啟用 jemalloc 線程優化內存管理
jemalloc-bg-thread yes
  • Hz 頻率
    默認的事件處理頻率(hz)被調高到 50 次/秒,并啟用動態調整,確保在負載波動時依然能夠快速響應客戶端請求。

  • 增量同步
    針對 AOF 重寫和 RDB 保存啟用增量同步,能有效減少磁盤 I/O 的壓力,提高整體性能。

  • 內存分配優化
    啟用 jemalloc 的后臺線程(jemalloc-bg-thread yes)進一步優化內存分配和釋放,適用于高并發場景。


限制與監控

為了及時發現問題并防止意外情況發生,Redis 提供了一系列監控和限制設置:

#####################
# 限制與監控
#####################
# 慢查詢閾值(微秒)
slowlog-log-slower-than 10000
# 慢查詢日志最大條數
slowlog-max-len 128 
# 關閉延遲監控
latency-monitor-threshold 0 
# 關閉 key 事件通知
notify-keyspace-events "" 
# 普通客戶端無限制
client-output-buffer-limit normal 0 0 0
# 副本節點限制
client-output-buffer-limit replica 256mb 64mb 60
# PubSub 限制
client-output-buffer-limit pubsub 32mb 8mb 60
  • 慢查詢日志
    通過設置 slowlog-log-slower-than 10000(單位為微秒)來記錄執行時間超過 10 毫秒的命令,有助于定位性能瓶頸。

  • 客戶端輸出緩沖區
    分別對普通客戶端、復制節點和 PubSub 模塊設定了緩沖區大小限制,防止異常情況(如客戶端阻塞)導致內存暴漲。


其他參數

最后,配置文件中還定義了一些額外參數,例如 RDB 保存條件和 TCP 相關參數,以進一步細化 Redis 的行為:

#####################
# 其他參數
#####################
# RDB 觸發條件
save 900 1 300 10 60 10000 
# TCP 連接隊列大小
tcp-backlog 511
# TCP 保活時間(秒)
tcp-keepalive 300

這些參數能根據具體業務場景對數據保存頻率、網絡連接隊列等進行微調,從而達到性能和可靠性之間的平衡。


完整配置

#########################################
# Redis 配置優化文件
# 適用于生產環境
########################################## 綁定地址,允許所有 IP 訪問,生產環境建議改為內網 IP
bind 192.168.1.1# 保護模式,建議開啟 (yes) 以增強安全性
protected-mode yes# 監聽端口
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"# 數據庫數量(默認16個,視業務需求調整)
databases 16# 顯示 Redis 啟動 Logo(關閉可減少日志干擾)
always-show-logo no#########################################
# RDB 持久化
#########################################
# RDB 失敗時阻止寫入,避免數據損壞
stop-writes-on-bgsave-error yes
# 啟用 RDB 數據壓縮
rdbcompression yes
# 啟用 RDB 數據校驗
rdbchecksum yes
# RDB 文件名
dbfilename dump.rdb
# 關閉 RDB 刪除同步文件,防止誤刪除
rdb-del-sync-files no
# RDB 文件存儲目錄,建議設為 SSD 盤
dir /data/app/redis/data/#########################################
# 復制(主從同步)
#########################################
# 允許副本在斷開主庫時仍然提供只讀服務
replica-serve-stale-data yes 
# 副本節點只讀模式
replica-read-only yes
# 關閉無磁盤同步(默認使用磁盤同步)
repl-diskless-sync no
# 無磁盤同步的延遲
repl-diskless-sync-delay 5 
# 關閉無磁盤加載
repl-diskless-load disabled
# 保持默認 TCP nodelay 配置
repl-disable-tcp-nodelay no
# 副本優先級(越小越容易成為主庫)
replica-priority 100 #########################################
# 內存管理
#########################################
# 默認不限制內存,可根據業務需求調整
maxmemory 0
# 不驅逐數據,可改為 allkeys-lru
maxmemory-policy noeviction
# 關閉惰性刪除,避免額外 CPU 開銷
lazyfree-lazy-eviction no 
# 關閉惰性過期
lazyfree-lazy-expire no 
# 關閉惰性刪除
lazyfree-lazy-server-del no # 關閉副本惰性清理
replica-lazy-flush no# 關閉 OOM 調整
oom-score-adj no 
# 僅在 OOM 保護時啟用
oom-score-adj-values 0 200 800#########################################
# AOF 持久化
#########################################
# 啟用 AOF 持久化
appendonly yes 
# AOF 文件名
appendfilename "appendonly.aof" 
# 每秒同步一次,性能和安全的折中方案
appendfsync everysec
# 重寫時是否關閉同步
no-appendfsync-on-rewrite no
# 觸發 AOF 重寫的比例
auto-aof-rewrite-percentage 100 
# 觸發 AOF 重寫的最小大小
auto-aof-rewrite-min-size 64mb
# 允許加載截斷的 AOF
aof-load-truncated yes# AOF 兼容 RDB 頭部,減少重啟時間
aof-use-rdb-preamble yes 
#########################################
# 性能優化
#########################################
# 調高 Hz 頻率,提高響應速度
hz 50
# 動態調整 Hz
dynamic-hz yes 
# AOF 重寫時增量同步
aof-rewrite-incremental-fsync yes
# RDB 保存時增量同步
rdb-save-incremental-fsync yes # 啟用 jemalloc 線程優化內存管理
jemalloc-bg-thread yes#########################################
# 限制與監控
#########################################
# 慢查詢閾值(微秒)
slowlog-log-slower-than 10000
# 慢查詢日志最大條數
slowlog-max-len 128 
# 關閉延遲監控
latency-monitor-threshold 0 
# 關閉 key 事件通知
notify-keyspace-events "" 
# 普通客戶端無限制
client-output-buffer-limit normal 0 0 0
# 副本節點限制
client-output-buffer-limit replica 256mb 64mb 60
# PubSub 限制
client-output-buffer-limit pubsub 32mb 8mb 60#########################################
# 其他參數
#########################################
# RDB 觸發條件
save 900 1 300 10 60 10000 
# TCP 連接隊列大小
tcp-backlog 511
# TCP 保活時間(秒)
tcp-keepalive 300

總結

本篇博文詳細解析了一份針對生產環境優化后的 Redis 配置文件。通過合理設置網絡參數、持久化策略、復制機制、內存管理和性能調優,Redis 能夠在高并發和大數據量場景下保持穩定高效運行。

實際部署時,應根據自身的硬件條件和業務特點對各項參數進行適當調整。對于環境安全、數據可靠性和性能優化等方面,建議參考官方文檔和社區最佳實踐,不斷完善和調優配置。

希望這篇解析能幫助你更好地理解 Redis 配置文件的各項參數,并在生產環境中構建一個更加穩定高效的 Redis 服務體系!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74222.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74222.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot實戰:Excel文件上傳、數據驗證與存儲全流程解析

一、需求場景與技術選型 在企業管理、數據中臺等系統中,Excel文件處理是常見需求。本文將基于SpringBoot實現以下核心功能: 支持.xls/.xlsx文件上傳數據完整性驗證(非空、格式等)業務數據驗證(關聯數據庫校驗&#x…

使用Java爬蟲按關鍵字搜索淘寶商品?

在電商領域,通過關鍵字搜索商品是獲取商品信息的常見需求。Java爬蟲技術可以幫助我們自動化地獲取這些信息,提高工作效率。本文將詳細介紹如何使用Java爬蟲按關鍵字搜索淘寶商品,并提供完整的代碼示例。 一、準備工作 1. 注冊淘寶開放平臺賬…

【Git】5 個分區的切換方式及示例

目錄 1. **工作區(Working Directory)**2. **緩存區(Stage/Index)**3. **本地倉庫(Local Repository)**4. **遠程倉庫(Remote Repository)**5. **貯藏區(Stash&#xff0…

【計算機視覺】YOLO語義分割

一、語義分割簡介 1. 定義 語義分割(Semantic Segmentation)是計算機視覺中的一項任務,其目標是對圖像中的每一個像素賦予一個類別標簽。與目標檢測只給出目標的邊界框不同,語義分割能夠在像素級別上區分不同類別,從…

MATLAB之數據分析圖系列:從二維到三維(直接套用)

MATLAB以其強大的矩陣運算和可視化功能,成為科研、工程領域的標配工具。本文提供從基礎二維圖形到復雜三維模型的即用代碼塊,涵蓋數據標注、多圖排版、動態演示等核心技巧 所有代碼均經過MATLAB 2023a實測,替換數據即可生成專業級圖表。” …

HTTP響應數據包全面解析:結構、原理與最佳實踐

目錄 HTTP響應概述 HTTP響應數據包結構 2.1 狀態行 2.2 響應頭 2.3 空行 2.4 響應體 HTTP狀態碼詳解 3.1 1xx信息響應 3.2 2xx成功響應 3.3 3xx重定向 3.4 4xx客戶端錯誤 3.5 5xx服務器錯誤 常見HTTP響應頭字段 響應體內容類型 緩存控制機制 實際HTTP響應示例分…

H.264編碼解析與C++實現詳解

一、H.264編碼核心概念 1.1 分層編碼結構 H.264采用分層設計,包含視頻編碼層(VCL)和網絡抽象層(NAL)。VCL處理核心編碼任務,NAL負責封裝網絡傳輸數據。 1.2 NALU單元結構 // NAL單元頭部結構示例 struc…

快速入手-基于Django-rest-framework的自身組件權限認證(九)

1、在對應的視圖函數里增加認證(局部起作用,不全局生效) 導入類: from rest_framework.authentication import ( BasicAuthentication, SessionAuthentication, ) from rest_framework.permissions import IsAuthentica…

受控組件和非受控組件的區別

在 React 中,?受控組件(Controlled Components)? 和 ?非受控組件(Uncontrolled Components)? 是處理表單元素的兩種不同方式,它們的核心區別在于 ?數據管理的方式 和 ?與 React 的交互模式。 受控組件…

邁向云原生:理想汽車 OLAP 引擎變革之路

在如今數據驅動的時代,高效的分析引擎對企業至關重要。理想汽車作為智能電動汽車的領軍企業,面臨著海量數據分析的挑戰。本文將展開介紹理想汽車 OLAP 引擎從存算一體向云原生架構演進的變革歷程,以及在此過程中面臨的挑戰,以及是…

ZLMediaKit 源碼分析——[3] ZLToolKit 中EventPoller之網絡事件處理

系列文章目錄 第一篇 基于SRS 的 WebRTC 環境搭建 第二篇 基于SRS 實現RTSP接入與WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 環境搭建 第四篇 WebRTC學習一:獲取音頻和視頻設備 第五篇 WebRTC學習二:WebRTC音視頻數據采集 第六篇 WebRTC學習三…

【分布式】分布式限流方案解析

文章目錄 固定窗口限流方案?實現方式?優點?缺點? 滑動窗口限流方案?實現方式?優點?缺點? 令牌桶限流方案?實現方式?優點?缺點? 漏斗限流方案?實現方式?優點?缺點? 在分布式系統蓬勃發展的當下,系統面臨的流量挑戰日益復雜。為確保系統在高并發場景下…

WPS JS宏編程教程(從基礎到進階)-- 第三部分:JS宏編程語言開發基礎

第三部分:JS宏編程語言開發基礎 @[TOC](第三部分:JS宏編程語言開發基礎)**第三部分:JS宏編程語言開發基礎**1. 變量與數據類型**變量聲明:三種方式****示例代碼****數據類型判斷****實戰:動態處理單元格類型**2. 運算符全解析**算術運算符****易錯點:字符串拼接 vs 數值相…

Python - 爬蟲-網頁抓取數據-庫urllib

urllib庫是Python內置的HTTP請求庫。無需額外安裝,可以直接使用。urllib庫包含以下四個模塊。 urllib.request - 打開和讀取 URL。urllib.error - 包含 urllib.request 拋出的異常。urllib.parse - 解析 URL。urllib.robotparser - 解析 robots.txt 文件。 1、reque…

C++進階知識復習 1~15

C 進階總復習 (1~15) 目的1. 介紹下程序從編寫到可執行的整個過程2. C中的auto和decltype的區別3. 介紹下多態的實現原理4. C中的new[] 和delete[] 為什么一定要配對使用?5. C中malloc申請的內存 可以使用delete釋放嘛6. 什么情況下會出現內存…

輸電線路航空標志球:低空飛行的安全路標 / 恒峰智慧科技

在現代社會,隨著航空業的快速發展,低空飛行活動日益頻繁。為了確保飛行安全,避免飛機與高壓電線等障礙物發生碰撞,輸電線路航空標志球應運而生。這種裝置被廣泛應用于高壓輸電線路上,尤其是超高壓和跨江輸電線&#xf…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件詳解

Debian/Ubuntu的networking的/etc/network/interfaces配置文件詳解 Debian/Ubuntu 的 /etc/network/interfaces 配置文件詳解 在 Debian/Ubuntu 系統中,/etc/network/interfaces 是傳統網絡接口配置文件,用于定義網絡接口的靜態/動態配置。以下是逐項解…

OpenCV 圖形API(或稱G-API)(1)

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 引言 OpenCV 圖形API(或稱G-API)是一個新的OpenCV模塊,旨在使常規圖像處理更快且更便攜。通過引入一種新的基于圖的執行…

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解題思路2. 代碼實現 題目鏈接:3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解題思路 這一題大的思路上不難想到就是一個動態規劃的思路。我們分別…

win10之mysql server 8.0.41安裝

一 mysql server 下載 官網下載地址頁面 https://dev.mysql.com/downloads/mysql/二 免裝版使用步驟 1 解壓 下載完成后,解壓文件夾,如下所示: 2 執行安裝命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…