在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,否则服务器无法启动。