本文最后更新于 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 设置密码是提高安全性的重要步骤。您可以通过修改配置文件或使用命令行设置密码。
方法一:通过配置文件设置密码
- 打开 Redis 配置文件:
bash
sudo nano /etc/redis/redis.conf # Ubuntu/Debian 默认路径
# 或
sudo nano /etc/redis.conf # CentOS/RHEL 默认路径
- 找到
# requirepass foobared
这一行,去掉注释并修改密码:
requirepass your_strong_password
- 保存文件并重启 Redis 服务:
bash
sudo systemctl restart redis
方法二:通过命令行设置密码
- 连接到 Redis 服务器:
bash
redis-cli
- 设置密码:
CONFIG SET requirepass "your_strong_password"
- 要永久保存此设置,还需要在配置文件中修改。
验证密码设置
- 尝试无密码连接并执行命令:
bash
redis-cli
127.0.0.1:6379> SET test "Hello"
(error) NOAUTH Authentication required.
- 使用密码验证并执行命令:
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 持久化通过创建数据快照来保存数据。
- 编辑 Redis 配置文件:
bash
sudo nano /etc/redis/redis.conf
- 配置 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 持久化通过记录每一个写操作来保存数据。
- 在 Redis 配置文件中启用 AOF:
appendonly yes # 启用 AOF
appendfilename "appendonly.aof" # AOF 文件名
appendfsync everysec # 同步策略:每秒同步一次
dir /var/lib/redis # AOF 文件保存路径
appendfsync
可选值:always
:每次写操作都同步(最安全,但性能最差)everysec
:每秒同步一次(折中方案,推荐)no
:由操作系统决定何时同步(性能最好,但最不安全)
重启 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 持久化
- 连接到 Redis 并添加一些数据:
bash
redis-cli -a your_strong_password
127.0.0.1:6379> SET test_key "test_value"
OK
- 手动触发 RDB 保存:
127.0.0.1:6379> SAVE
OK
- 检查 RDB 文件是否生成:
bash
ls -la /var/lib/redis/dump.rdb
验证 AOF 持久化
- 连接到 Redis 并添加一些数据:
bash
redis-cli -a your_strong_password
127.0.0.1:6379> SET aof_test "aof_value"
OK
- 检查 AOF 文件是否更新:
bash
tail -f /var/lib/redis/appendonly.aof
安全加固建议
除了设置密码和持久化外,还应考虑以下安全措施:
- 绑定特定 IP:
bind 127.0.0.1 内部IP地址
- 禁用危险命令:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
- 设置最大内存限制:
maxmemory 1gb
maxmemory-policy allkeys-lru
- 设置 Redis 用户权限(Redis 6.0+):
bash
redis-cli -a your_strong_password
127.0.0.1:6379> ACL SETUSER reader on >reader_password +get ~* -@all
监控和维护
- 定期备份持久化文件:
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
- 设置定期执行备份:
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 -
- 监控 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 密码和持久化机制可以提高系统的安全性和可靠性。根据您的具体需求,可以选择适合的持久化策略,并定期备份持久化文件,以确保数据安全。