安全配置和排查命令

Redis 默认偏向内网服务,不应该直接暴露到公网。

公网开放 Redis 端口非常危险,可能导致数据泄露、被清空或被写入恶意数据。

一、绑定地址

配置文件里常见配置:

bind 127.0.0.1
protected-mode yes

含义:

配置说明
bind 127.0.0.1只监听本机
protected-mode yes开启保护模式

如果 Redis 部署在服务器上,并且只有后端服务访问,通常应该放在内网地址或容器网络里。

二、密码认证

Redis 6 之前常见:

requirepass strong_password

客户端连接:

redis-cli -a strong_password

或连接后认证:

AUTH strong_password

Redis 6 之后支持 ACL,可以给不同用户设置不同权限。

示例:

ACL SETUSER app on >strong_password ~app:* +@read +@write

含义:

部分说明
app用户名
on启用用户
>strong_password设置密码
~app:*只能访问 app:* key
+@read +@write允许读写命令类别

三、危险命令

这些命令需要谨慎:

命令风险
FLUSHDB清空当前库
FLUSHALL清空所有库
KEYS *数据量大时阻塞
CONFIG SET修改运行配置
SHUTDOWN关闭 Redis

生产环境可以通过 ACL 限制应用账号权限,避免应用账号执行管理命令。

四、连接排查

测试连通:

redis-cli -h 127.0.0.1 -p 6379 PING

认证后测试:

redis-cli -h 127.0.0.1 -p 6379 -a strong_password PING

查看客户端连接:

CLIENT LIST

查看当前配置:

CONFIG GET bind
CONFIG GET requirepass
CONFIG GET maxmemory
CONFIG GET maxmemory-policy

五、性能排查

查看慢命令:

SLOWLOG GET 10

查看内存:

INFO memory

查看命令统计:

INFO commandstats

查看延迟:

LATENCY DOCTOR

定位单个 key 类型和大小:

TYPE user:1:profile
MEMORY USAGE user:1:profile
TTL user:1:profile

六、删除 key

普通删除:

DEL user:1:profile

异步删除:

UNLINK user:1:profile

大 key 优先考虑 UNLINK,减少阻塞风险。

批量删除时先用 SCAN 找 key,再分批删除。避免在生产环境使用 KEYS * 直接扫全库。