Redis 安装与排查
场景
应用要用 Redis 做缓存或会话存储,装上之后还要防止被扫、被写满。
前置条件
- 知道应用连过来的网段
- 规划内存上限(别让 Redis 吃满物理内存)
- 确认是否允许丢数据(决定开不开 AOF)
配置
dnf install -y redis
cat >/etc/redis/redis.conf.d/ops.conf <<'EOF'
bind 10.0.0.5 127.0.0.1
protected-mode yes
requirepass 强密码
maxmemory 2gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
EOF
systemctl enable --now redis
systemctl restart redis
连接测试:
redis-cli -h 10.0.0.5 -a 强密码 ping
验证
redis-cli -a 强密码 INFO server | head
redis-cli -a 强密码 INFO memory | grep used_memory_human
redis-cli -a 强密码 CONFIG GET maxmemory
redis-cli -a 强密码 DBSIZE
回滚
systemctl disable --now redis
rm /etc/redis/redis.conf.d/ops.conf
坑
- 默认
bind 0.0.0.0+ 无密码 = 被挖矿,这是最常见的失陷原因。 maxmemory不设,内存涨到 OOM 被内核杀掉。maxmemory-policy noeviction时写满会直接报错,不是淘汰。- 开 AOF 后磁盘写入翻倍,机械盘上延迟明显。
- 主从切换后应用还连着旧主,要客户端支持 sentinel 或 cluster。
KEYS *在大库上会阻塞,用SCAN。