一、redis.conf 是什么?
Redis 的配置文件(默認命名為 redis.conf
,Redis 8.0 之后改為 redis-full.conf
)控制著服務運行的各項參數。該文件采用以下結構:
指令名 參數1 參數2 ... 參數N
例如:
replicaof 127.0.0.1 6380
requirepass "hello world"
- 支持雙引號或單引號包裹字符串;
- 雙引號可使用
\xFF
形式表示 ASCII 十六進制字符; - 單引號中可使用反斜線轉義。
提示: Redis 的官方包中都附帶了自說明的 redis.conf 配置文件,建議初學者深入閱讀。
二、命令行方式傳參(適用于測試)
除了配置文件,還可以通過命令行直接傳遞配置參數,非常適合臨時測試。例如:
./redis-server --port 6380 --replicaof 127.0.0.1 6379
這會啟動一個新的 Redis 實例,監聽 6380 端口,作為 6379 的副本。
命令行參數格式與配置文件一致,區別在于命令行前綴多了 --
。
注意:Redis 內部會自動構建一個臨時配置文件(或在已有配置上追加),不會影響原始配置文件。
三、運行時動態修改配置(不重啟服務)
Redis 提供了運行時修改配置的能力,通過 CONFIG
命令可實現動態讀取與設置參數:
示例:
CONFIG GET maxmemory
CONFIG SET maxmemory 512mb
不過需要注意:
- 不是所有參數都支持動態修改;
- 修改不會同步寫入 redis.conf 文件,下一次重啟將恢復原值;
- 若想將內存配置持久化,可執行:
CONFIG REWRITE
該命令將自動更新配置文件中與當前配置值不符的項,保留原有注釋。
四、Redis 配置文件常用項說明(精選)
配置項 | 說明 |
---|---|
port | 設置監聽端口,默認 6379 |
bind | 限定綁定的 IP 地址,常見設為 127.0.0.1 |
requirepass | 設置密碼,啟用身份驗證(已被 ACL 替代) |
aclfile | 指定 ACL 用戶配置文件 |
appendonly | 啟用 AOF 持久化 |
dir | 持久化文件寫入目錄 |
save | 快照保存策略,如 save 900 1 |
maxmemory | 限制最大內存使用量 |
maxmemory-policy | 內存淘汰策略,如 allkeys-lru |
logfile | 日志文件路徑 |
daemonize | 是否后臺運行(true/false) |
五、Redis 作為緩存的配置建議
Redis 常被用作緩存系統,如需模擬 Memcached 行為,可使用以下配置:
maxmemory 2mb
maxmemory-policy allkeys-lru
此模式下,Redis 會自動在內存滿時根據 近似 LRU 算法 淘汰所有 key,而無需程序手動設置 EXPIRE
。
淘汰策略常見選項:
noeviction
:不淘汰,返回錯誤allkeys-lru
:基于訪問時間淘汰任意 keyvolatile-lru
:只淘汰設置過expire
的 keyallkeys-random
:隨機淘汰任意 key
六、版本變化提示(redis.conf vs redis-full.conf)
- Redis 8.0 開始,配置文件名改為
redis-full.conf
,文件更完整,包含全部默認配置; - 舊版本依然使用
redis.conf
; - 官方 GitHub 倉庫中提供了每個版本對應的配置樣例,便于對比變化:
例如:
- Redis 7.4:
redis.conf
- Redis 8.0:
redis-full.conf
七、總結:Redis 配置文件使用建議
場景 | 建議配置方式 |
---|---|
開發/調試 | 命令行或簡化配置文件 |
測試/演示 | 精簡配置 + CONFIG SET |
生產部署 | 使用完整 redis.conf,禁用 CONFIG 命令 |
高并發緩存系統 | 配置 maxmemory + LRU 淘汰策略 |
ACL 用戶權限細分 | 啟用 aclfile 管理賬戶 |
TLS/加密傳輸 | 使用 tls-* 系列配置項 |
配置熱更新 | 搭配 CONFIG REWRITE 持久化變更 |