Redis 是高性能的内存键值数据库,常用于网站缓存、会话存储、消息队列和排行榜等场景。在搬瓦工 VPS 上正确配置 Redis,既要让应用能顺利连接,又要做好访问控制,避免成为开放的网络风险点。本文涵盖安装、密码设置、绑定地址、持久化配置和连接测试全流程。
本文要点
- 安装 Redis 并验证服务正常运行
- 设置 requirepass 访问密码,防止未授权连接
- bind 配置:只监听本地还是开放远程
- RDB 与 AOF 两种持久化方案的选择
- 用 redis-cli 测试连接与基本操作
安装 Redis
Debian / Ubuntu
apt update
apt install -y redis-server
# 启动并设置开机自启
systemctl enable --now redis-server
# 验证服务状态
systemctl status redis-server
# 查看版本
redis-server --versionCentOS / AlmaLinux / Rocky Linux
dnf install -y redis
systemctl enable --now redis配置访问密码(requirepass)
Redis 默认无密码,任何能连上端口的进程都可以读写数据,这在生产环境是严重风险。务必设置密码:
# 打开配置文件
nano /etc/redis/redis.conf
# 找到 requirepass 行,取消注释并设置强密码:
# requirepass foobared
# 改为:
requirepass 你的强密码
# 重启 Redis 使配置生效
systemctl restart redis-serverRedis 未设密码是高危配置
绑定地址(bind)
Redis 的 bind 配置决定它监听哪些网络接口:
| bind 配置 | 效果 | 适用场景 |
|---|---|---|
| bind 127.0.0.1 | 仅本机进程可连接 | 应用与 Redis 在同一台服务器(推荐) |
| bind 0.0.0.0 | 监听所有接口 | 需要远程连接时(务必配合防火墙和密码) |
| bind 127.0.0.1 ::1 | 本机 IPv4 + IPv6 | 双栈本地访问 |
如果应用与 Redis 在同一台服务器,保持 bind 127.0.0.1 是最安全的选择。
开放远程必须配合防火墙
bind 0.0.0.0 的同时务必在防火墙限制来源 IP,只允许可信 IP 访问 6379 端口:ufw allow from 可信IP to any port 6379。数据持久化
Redis 提供两种持久化方式,可以单独使用,也可以同时启用:
| 方式 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| RDB | 定时快照 | 文件小、恢复快 | 两次快照间的数据可能丢失 |
| AOF | 追加写操作日志 | 数据更完整 | 文件较大、重启恢复慢 |
在配置文件中配置 AOF:
# 开启 AOF
appendonly yes
appendfsync everysec # 每秒同步一次,平衡性能与安全
# RDB 快照(默认已开启,可按需调整)
save 900 1 # 900 秒内有 1 次写入就触发快照
save 300 10 # 300 秒内有 10 次写入
save 60 10000 # 60 秒内有 10000 次写入用 redis-cli 测试连接
# 本地连接并验证密码
redis-cli -a 你的强密码 ping
# 输出 PONG 表示连接成功
# 进入交互模式
redis-cli -a 你的强密码
# 基本操作
127.0.0.1:6379> SET hello "world"
127.0.0.1:6379> GET hello
127.0.0.1:6379> KEYS *
127.0.0.1:6379> INFO server小结
- 安装后立即设置 requirepass,这是最重要的安全步骤
- bind 127.0.0.1 仅本地访问,不需要远程时不要改
- RDB 适合对少量数据丢失容忍的缓存场景;AOF 适合数据完整性要求高的场景
- 用 redis-cli ping 快速验证服务可用性
- 定期用 redis-cli INFO 了解内存使用与命中率
常见问题
Redis 适合存什么类型的数据?
最适合缓存(热点数据、页面片段)、会话(Session)、排行榜(Sorted Set)、消息队列(List/Stream)等对读写速度要求高、可以容忍少量丢失的场景。关键业务数据仍应持久化到 MySQL/PostgreSQL。
Redis 内存用满了会怎样?
可在配置文件设置 maxmemory 限制上限,并配置 maxmemory-policy(如 allkeys-lru)决定内存不足时的淘汰策略。不设置上限,Redis 可能耗尽系统内存导致服务崩溃。
如何安全地在两台服务器之间使用 Redis?
最安全的做法是通过 SSH 隧道转发 Redis 端口,而非直接开放 6379 到公网:ssh -L 6379:127.0.0.1:6379 user@服务器IP,然后本地连接 127.0.0.1:6379 即可。
修改 redis.conf 后不生效怎么办?
确认修改了正确的配置文件路径(用 systemctl status redis-server 查看启动参数),并执行 systemctl restart redis-server 重启服务。