人人都会AI编程

19.3 Redis:安装、配置、持久化、密码验证

更新时间:2026-07-12

Redis(Remote Dictionary Server)是一个高性能的键值内存数据库,支持字符串、哈希、列表、集合、有序集合等多种数据结构。它不仅可用作缓存,还常被用于消息队列(发布/订阅)、实时计数、排行榜等场景,几乎所有需要快速读写数据的互联网服务背后,都能看到它的身影。

本节以最常见的 Linux 发行版(Ubuntu/Debian 和 CentOS/Rocky Linux)为例,介绍 Redis 的安装、基础配置、持久化机制以及密码验证的设置方法。

1. 安装 Redis

大多数情况下,直接通过系统自带的包管理器安装最为快捷。如果需要最新版本或定制编译参数,可以从源码编译。

通过包管理器安装(推荐)

  • Ubuntu/Debian:
  sudo apt update
  sudo apt install redis-server -y
  
  • CentOS/Rocky Linux(需先启用 EPEL 仓库):
  sudo dnf install epel-release -y
  sudo dnf install redis -y
  

安装完成后,Redis 服务通常会自动启动,可以通过以下命令检查状态:

sudo systemctl status redis

如果未启动,手动启动并设置开机自启:

sudo systemctl enable --now redis

从源码编译安装
如果需要特定版本(例如带有新模块的版本),可以下载源码编译:

wget https://download.redis.io/releases/redis-7.2.4.tar.gz
tar xzf redis-7.2.4.tar.gz
cd redis-7.2.4
make
sudo make install

编译出的可执行文件(redis-serverredis-cli 等)默认安装到 /usr/local/bin。此后可以手动创建 systemd 服务文件来管理。

2. 基础配置

Redis 的主配置文件通常位于 /etc/redis/redis.conf(包管理器安装)或编译目录下的 redis.conf。以下是几个需要第一时间关注的配置项。

关键配置项(编辑 /etc/redis/redis.conf

  • bind 127.0.0.1

指定 Redis 监听的网络接口。默认只允许本地访问,如果要从外部连接,可以添加本机 IP 或设为 0.0.0.0 监听所有接口,但必须配合密码和防火墙使用。

  • port 6379

监听端口,默认 6379。

  • daemonize yes

以守护进程方式运行,让 Redis 在后台启动。systemd 管理时通常设为 no,由 systemd 控制前台运行。

  • logfile /var/log/redis/redis.log

日志文件路径,避免日志直接输出到标准输出。

  • dir /var/lib/redis

持久化文件(RDB、AOF)的存储目录。

  • maxmemory 256mb

设置最大内存使用量,超过后会按照 maxmemory-policy 定义的策略淘汰键(如 allkeys-lru、volatile-lru 等)。生产环境务必配置此项,避免内存耗尽。

修改配置后需重启服务生效:

sudo systemctl restart redis

3. 持久化机制

Redis 的数据默认保存在内存中,但提供了两种方式将数据持久化到磁盘,以便重启后恢复。两者可以单独使用,也可以同时开启。

RDB(Redis Database)

  • 定期将某个时间点的数据快照写入 .rdb 文件。
  • 触发方式:满足配置文件中的 save <秒数> <修改次数> 条件时自动生成,比如默认有:
  save 900 1      # 900 秒内至少 1 次修改
  save 300 10     # 300 秒内至少 10 次修改
  save 60 10000   # 60 秒内至少 10000 次修改
  

也可以手动执行 SAVEBGSAVE 命令。

  • 优点:文件紧凑,恢复速度快,适合备份。
  • 缺点:如果 Redis 意外崩溃,最后一次快照之后的数据会丢失。

AOF(Append Only File)

  • 记录每一条写入命令,追加到 .aof 文件末尾,类似数据库的 WAL。
  • 开启方式:在配置文件中设置 appendonly yes
  • 同步策略由 appendfsync 控制:
  • always:每条命令都同步,最安全但性能最低;
  • everysec:每秒同步一次,兼顾性能和安全(默认推荐);
  • no:由操作系统决定,可能丢失较多数据。
  • 优点:数据丢失窗口极小(最多一秒或一条命令),文件可读,方便故障修复。
  • 缺点:AOF 文件通常比 RDB 大,恢复速度稍慢。Redis 会定期通过后台重写压缩 AOF 文件。

生产环境建议:同时开启 RDB 和 AOF,RDB 用于日常备份,AOF 保障数据安全。若对性能要求极高且可以接受少量数据丢失,可只开启 RDB;若数据绝不能丢失(如记账系统),优先使用 AOF。

4. 密码验证

默认安装的 Redis 没有密码保护,任何能够连接的人都可以执行所有命令,这在生产环境是极其危险的。设置密码是最基本的安全措施。

方法一:使用传统 requirepass
redis.conf 中找到 # requirepass foobared,去掉注释并修改为强密码:

requirepass your_strong_password_here

重启 Redis 后,客户端连接时需通过 AUTH 命令认证:

redis-cli -a your_strong_password_here

或在进入交互式界面后执行:

redis-cli
127.0.0.1:6379> AUTH your_strong_password_here

方法二:使用 ACL(Redis 6.0+ 推荐)
ACL 提供了更细粒度的用户和权限管理。除了设置默认用户密码,还可以创建不同权限的账号。

  • redis.conf 中配置:
  user default on >default_password_here ~* +@all
  user readonly on >readonly_password_here ~* +@read
  

上面定义了默认用户 default(拥有全部命令权限)和一个只读用户 readonly(只能读取数据)。

  • 客户端连接时指定用户:
  redis-cli --user readonly -a readonly_password_here
  

如果 Redis 暴露在公网,除了密码,还需结合防火墙限制来源 IP、禁用危险命令(如 FLUSHALLCONFIG)等。至少,一个强密码是必须的第一道防线。

快速验证
安装、配置并重启后,可以用 redis-cli 简单测试:

redis-cli ping
# 如果设置了密码,应该返回 (error) NOAUTH Authentication required.
redis-cli -a your_password ping
# 认证通过后返回 PONG

Redis 的安装和基础配置并不复杂,但它的灵活性和性能却极为可观。掌握上述要点,你就能快速搭建出一个安全、可持久化的 Redis 实例,应对大多数日常工作负载。