Redis 安装与配置指南:密码设置与持久化

本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。

Redis 是一个开源的内存数据结构存储系统,可用作数据库、缓存和消息中间件。本文将详细介绍 Redis 的安装过程,以及如何设置密码和配置持久化,确保数据安全和可靠性。

环境准备

  • 操作系统:Linux(Ubuntu/Debian/CentOS)
  • Redis 版本:6.2 或更高
  • 服务器要求:至少 1GB RAM

Redis 安装

Ubuntu/Debian 安装

bash
# 更新软件包列表
sudo apt update

# 安装 Redis
sudo apt install redis-server

CentOS/RHEL 安装

bash
# 安装 EPEL 仓库
sudo yum install epel-release

# 安装 Redis
sudo yum install redis

# 启动 Redis
sudo systemctl start redis

# 设置开机自启
sudo systemctl enable redis

从源码编译安装(适用于所有 Linux 发行版)

bash
# 安装编译工具
sudo apt install build-essential tcl # Ubuntu/Debian
# 或
sudo yum groupinstall "Development Tools" # CentOS/RHEL

# 下载 Redis 源码
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar xzf redis-6.2.6.tar.gz
cd redis-6.2.6

# 编译安装
make
sudo make install

# 创建配置目录
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/

# 创建服务文件
sudo tee /etc/systemd/system/redis.service > /dev/null <<EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 创建 Redis 用户
sudo adduser --system --group --no-create-home redis
sudo mkdir -p /var/lib/redis
sudo chown redis:redis /var/lib/redis

# 启动 Redis 服务
sudo systemctl daemon-reload
sudo systemctl start redis
sudo systemctl enable redis

设置 Redis 密码

为 Redis 设置密码是提高安全性的重要步骤。您可以通过修改配置文件或使用命令行设置密码。

方法一:通过配置文件设置密码

  1. 打开 Redis 配置文件:
bash
sudo nano /etc/redis/redis.conf  # Ubuntu/Debian 默认路径
# 或
sudo nano /etc/redis.conf  # CentOS/RHEL 默认路径
  1. 找到 # requirepass foobared 这一行,去掉注释并修改密码:
requirepass your_strong_password
  1. 保存文件并重启 Redis 服务:
bash
sudo systemctl restart redis

方法二:通过命令行设置密码

  1. 连接到 Redis 服务器:
bash
redis-cli
  1. 设置密码:
CONFIG SET requirepass "your_strong_password"
  1. 要永久保存此设置,还需要在配置文件中修改。

验证密码设置

  1. 尝试无密码连接并执行命令:
bash
redis-cli
127.0.0.1:6379> SET test "Hello"
(error) NOAUTH Authentication required.
  1. 使用密码验证并执行命令:
bash
redis-cli
127.0.0.1:6379> AUTH your_strong_password
OK
127.0.0.1:6379> SET test "Hello"
OK

或者在连接时提供密码:

bash
redis-cli -a your_strong_password

配置 Redis 持久化

Redis 提供了两种持久化方式:RDB(Redis Database)和 AOF(Append Only File)。

RDB 持久化配置

RDB 持久化通过创建数据快照来保存数据。

  1. 编辑 Redis 配置文件:
bash
sudo nano /etc/redis/redis.conf
  1. 配置 RDB 持久化:
save 900 1      # 900秒(15分钟)内有至少1个键被修改则触发保存
save 300 10     # 300秒(5分钟)内有至少10个键被修改则触发保存
save 60 10000   # 60秒内有至少10000个键被修改则触发保存

dbfilename dump.rdb  # RDB 文件名
dir /var/lib/redis   # RDB 文件保存路径

AOF 持久化配置

AOF 持久化通过记录每一个写操作来保存数据。

  1. 在 Redis 配置文件中启用 AOF:
appendonly yes                  # 启用 AOF
appendfilename "appendonly.aof" # AOF 文件名
appendfsync everysec            # 同步策略:每秒同步一次

dir /var/lib/redis              # AOF 文件保存路径
  1. appendfsync 可选值:

    • always:每次写操作都同步(最安全,但性能最差)
    • everysec:每秒同步一次(折中方案,推荐)
    • no:由操作系统决定何时同步(性能最好,但最不安全)
  2. 重启 Redis 服务:

bash
sudo systemctl restart redis

同时启用 RDB 和 AOF

推荐在生产环境中同时启用两种持久化方式,以获得更好的数据安全性:

# RDB 配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis

# AOF 配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

验证持久化配置

验证 RDB 持久化

  1. 连接到 Redis 并添加一些数据:
bash
redis-cli -a your_strong_password
127.0.0.1:6379> SET test_key "test_value"
OK
  1. 手动触发 RDB 保存:
127.0.0.1:6379> SAVE
OK
  1. 检查 RDB 文件是否生成:
bash
ls -la /var/lib/redis/dump.rdb

验证 AOF 持久化

  1. 连接到 Redis 并添加一些数据:
bash
redis-cli -a your_strong_password
127.0.0.1:6379> SET aof_test "aof_value"
OK
  1. 检查 AOF 文件是否更新:
bash
tail -f /var/lib/redis/appendonly.aof

安全加固建议

除了设置密码和持久化外,还应考虑以下安全措施:

  1. 绑定特定 IP:
bind 127.0.0.1 内部IP地址
  1. 禁用危险命令:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
  1. 设置最大内存限制:
maxmemory 1gb
maxmemory-policy allkeys-lru
  1. 设置 Redis 用户权限(Redis 6.0+):
bash
redis-cli -a your_strong_password
127.0.0.1:6379> ACL SETUSER reader on >reader_password +get ~* -@all

监控和维护

  1. 定期备份持久化文件:
bash
# 创建备份脚本
sudo nano /usr/local/bin/backup-redis.sh
bash
#!/bin/bash
BACKUP_DIR="/backup/redis"
DATE=$(date +%Y%m%d%H%M)
mkdir -p $BACKUP_DIR
cp /var/lib/redis/dump.rdb $BACKUP_DIR/dump-$DATE.rdb
cp /var/lib/redis/appendonly.aof $BACKUP_DIR/appendonly-$DATE.aof
  1. 设置定期执行备份:
bash
# 添加执行权限
sudo chmod +x /usr/local/bin/backup-redis.sh

# 添加到 crontab
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/backup-redis.sh") | crontab -
  1. 监控 Redis 状态:
bash
redis-cli -a your_strong_password INFO | grep used_memory_human
redis-cli -a your_strong_password INFO | grep connected_clients

总结

通过本文介绍的步骤,您已经:

  • 安装了 Redis 数据库
  • 设置了密码保护
  • 配置了 RDB 和 AOF 持久化
  • 了解了如何验证和监控 Redis 实例

正确配置 Redis 密码和持久化机制可以提高系统的安全性和可靠性。根据您的具体需求,可以选择适合的持久化策略,并定期备份持久化文件,以确保数据安全。

Nginx 安装与配置指南
Go语言并发编程实战指南