# Redis 安装与排查 ## 场景 应用要用 Redis 做缓存或会话存储,装上之后还要防止被扫、被写满。 ## 前置条件 - 知道应用连过来的网段 - 规划内存上限(别让 Redis 吃满物理内存) - 确认是否允许丢数据(决定开不开 AOF) ## 配置 ```bash 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 ``` 连接测试: ```bash redis-cli -h 10.0.0.5 -a 强密码 ping ``` ## 验证 ```bash 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 ``` ## 回滚 ```bash 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`。