在redis數據量比較大時,執行 keys * ,fluashdb 這些命令,會導致redis長時間阻塞,大量請求被阻塞,cpu飆升,嚴重可能導致redis宕機,數據庫雪崩。所以一些命令在生產環境禁止使用。
Redis?禁用命令
為防止執行高危操作過程,Redis 數據的安全,Redis?禁用了如下命令:
-
BGREWRITEAOF:
-
功能: 異步重寫 AOF(Append Only File)文件,優化文件大小。
-
用途: 用于在不中斷服務的情況下優化持久化文件。
-
-
BGSAVE:
-
功能: 異步保存當前數據庫的狀態到磁盤。
-
用途: 用于在后臺進行數據備份。
-
-
CONFIG:
-
功能: 用于獲取和設置 Redis 服務器的配置參數。
-
用途: 用于動態調整 Redis 服務器的配置,如內存限制、日志級別等。
-
-
DEBUG:
-
功能: 提供一系列調試命令,如?
DEBUG OBJECT
?和?DEBUG SEGFAULT
。 -
用途: 用于診斷和調試 Redis 服務器的問題。
-
-
KEYS:
-
功能: 查找所有符合給定模式的鍵。
-
用途: 用于查找和管理數據庫中的鍵,但要注意在大數據庫中使用可能會影響性能。
-
-
REPLICAOF:
-
功能: 將當前服務器設置為另一個 Redis 服務器的副本。
-
用途: 用于實現主從復制,提高數據可靠性和讀取性能。
-
-
SAVE:
-
功能: 同步保存當前數據庫的狀態到磁盤。
-
用途: 用于立即進行數據備份,但會阻塞服務器直到保存完成。
-
-
SHUTDOWN:
-
功能: 安全地關閉 Redis 服務器。
-
用途: 用于在維護或升級時關閉服務器,可以帶參數如?
NOSAVE
?或?SAVE
?來控制是否在關閉前進行保存。
-
-
SLAVEOF:
-
功能: 與?
REPLICAOF
?功能相同,但?SLAVEOF
?是舊版本的命令,新版本推薦使用?REPLICAOF
。 -
用途: 用于實現主從復制。
-
如何規避Redis的危險命令
修改服務器的配置文件redis.conf,在SECURITY這一項中,我們新增以下命令:
rename-command BGREWRITEAOF ""
rename-command BGSAVE ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command DEBUG ""
rename-command REPLICAOF ""
rename-command SAVE ""
rename-command SHUTDOWN ""
rename-command SLAVEOF ""
如果想要保留命令,但是不能輕易使用,可以重命名命令來設定,設置隨機字符代替:
rename-command BGREWRITEAOF d1ce7f8be0453da5fe3a114136ab9fc2
rename-command BGSAVE a1d305d283aeebbbb63205e258b115d2
rename-command CONFIG 73e99d350a4aa6f1a5af04ec29173f73
rename-command KEYS 48fb38e1f876fa3dc9c8cd6cad73c243
rename-command DEBUG dc30ec20708ef7b0f641ef78b7880a15
rename-command REPLICAOF 13bc29f65cfd5353e36769924a62b401
rename-command SAVE f5cf47ab06d0d98b0d16d10c82d87953
rename-command SHUTDOWN b9984206799a7f9fe4bd1b6c18db8112
rename-command SLAVEOF edffca596321632e1845860c7104bf92
對于FLUSHALL命令,需要設置配置文件中appendonly no,否則服務器無法啟動。