1. Redis安装前的准备工作
在Linux系统上安装Redis之前,我们需要做好充分的准备工作。首先确认你的Linux系统版本,本文以CentOS 7.6为例进行说明,但方法同样适用于其他主流Linux发行版。
1.1 系统环境检查
执行以下命令检查系统版本:
bash复制cat /etc/redhat-release
# 或
lsb_release -a
确保你的系统有足够的权限,建议使用root用户或具有sudo权限的账户进行操作。可以通过以下命令切换到root用户:
bash复制su -
# 或
sudo -i
1.2 安装依赖包
Redis的编译和运行需要一些基础依赖包,执行以下命令安装:
bash复制yum install -y gcc make tcl wget
这些依赖包的作用分别是:
- gcc:C语言编译器
- make:构建工具
- tcl:测试工具包
- wget:下载工具
注意:如果你的系统是Ubuntu/Debian系列,需要使用apt-get install命令替代yum install
2. Redis下载与解压
2.1 获取Redis安装包
访问Redis官网(https://redis.io)获取最新稳定版下载链接。截至本文撰写时,最新稳定版本是6.2.6,但建议你根据实际需求选择合适的版本。
使用wget命令下载:
bash复制wget http://download.redis.io/releases/redis-6.2.6.tar.gz
如果下载速度较慢,可以考虑使用国内镜像源:
bash复制wget https://mirrors.huaweicloud.com/redis/redis-6.2.6.tar.gz
2.2 解压安装包
下载完成后,执行以下命令解压:
bash复制tar -xzvf redis-6.2.6.tar.gz
解压后会生成redis-6.2.6目录,我们可以将其移动到更合适的安装位置:
bash复制mv redis-6.2.6 /usr/local/redis
cd /usr/local/redis
3. 编译安装Redis
3.1 编译Redis源码
进入Redis目录并执行编译:
bash复制cd /usr/local/redis
make
编译过程可能需要几分钟时间,取决于你的系统性能。如果编译过程中出现错误,通常是缺少依赖包导致的,请根据错误提示安装相应的依赖。
常见问题:如果遇到"jemalloc/jemalloc.h: No such file or directory"错误,可以尝试运行
make MALLOC=libc命令
3.2 安装Redis
编译成功后,执行安装命令:
bash复制make install PREFIX=/usr/local/redis
PREFIX参数指定了安装目录,这样所有Redis文件都会集中在/usr/local/redis目录下,便于管理。安装完成后,你会在/usr/local/redis/bin目录下看到以下可执行文件:
- redis-server:Redis服务器
- redis-cli:Redis命令行客户端
- redis-benchmark:性能测试工具
- redis-check-aof:AOF文件检查工具
- redis-check-rdb:RDB文件检查工具
4. Redis配置与启动
4.1 基本配置
Redis的配置文件位于安装目录下的redis.conf。我们先复制一份原始配置作为备份:
bash复制cp redis.conf redis.conf.bak
然后编辑配置文件:
bash复制vim redis.conf
需要修改的几个关键配置项:
- 设置守护进程模式(后台运行):
conf复制daemonize yes
- 设置日志文件路径:
conf复制logfile "/var/log/redis.log"
- 设置数据存储目录:
conf复制dir /var/lib/redis
- 如果需要远程访问,修改绑定地址:
conf复制bind 0.0.0.0
- 关闭保护模式(仅限内网安全环境):
conf复制protected-mode no
- 设置密码(可选但建议):
conf复制requirepass yourpassword
4.2 创建必要的目录和文件
执行以下命令创建Redis运行所需的目录和文件:
bash复制mkdir -p /var/lib/redis
touch /var/log/redis.log
chown -R redis:redis /var/lib/redis /var/log/redis.log
4.3 启动Redis服务
使用配置文件启动Redis:
bash复制/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
验证Redis是否正常运行:
bash复制ps -ef | grep redis
netstat -tulnp | grep 6379
4.4 连接Redis
使用redis-cli连接Redis服务器:
bash复制/usr/local/redis/bin/redis-cli
如果设置了密码,需要先认证:
bash复制auth yourpassword
5. Redis系统服务配置
5.1 创建systemd服务文件
为了让Redis能够作为系统服务管理,我们创建service文件:
bash复制vim /etc/systemd/system/redis.service
添加以下内容:
ini复制[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
5.2 创建Redis用户
为了安全起见,我们应该使用专用用户运行Redis:
bash复制useradd -r -s /sbin/nologin redis
chown -R redis:redis /usr/local/redis
5.3 管理Redis服务
启用并启动Redis服务:
bash复制systemctl daemon-reload
systemctl enable redis
systemctl start redis
常用服务管理命令:
bash复制systemctl status redis # 查看状态
systemctl stop redis # 停止服务
systemctl restart redis # 重启服务
6. Redis安全配置建议
6.1 防火墙设置
如果你的服务器启用了防火墙,需要开放Redis端口:
bash复制firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
6.2 安全加固建议
- 使用强密码替换默认的简单密码
- 定期备份Redis数据
- 限制可连接Redis的IP地址
- 禁用危险命令:
conf复制rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOWN
- 定期检查Redis日志
- 保持Redis版本更新
7. Redis性能优化建议
7.1 内存管理
在redis.conf中配置最大内存限制:
conf复制maxmemory 2gb
maxmemory-policy allkeys-lru
7.2 持久化配置
根据需求选择合适的持久化方式:
- RDB方式(快照):
conf复制save 900 1
save 300 10
save 60 10000
- AOF方式(追加日志):
conf复制appendonly yes
appendfsync everysec
7.3 其他优化参数
conf复制tcp-backlog 511
timeout 0
tcp-keepalive 300
8. 常见问题排查
8.1 无法远程连接
- 检查bind配置是否为0.0.0.0
- 检查protected-mode是否为no
- 检查防火墙设置
- 检查云服务器的安全组规则
8.2 内存不足
- 检查maxmemory设置
- 使用info memory命令查看内存使用情况
- 考虑增加swap空间
8.3 性能问题
- 使用redis-benchmark进行性能测试
- 检查slowlog获取慢查询
- 检查持久化配置是否影响性能
9. Redis日常维护
9.1 数据备份
定期备份Redis数据:
bash复制cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +%Y%m%d).rdb
9.2 日志轮转
配置logrotate进行日志管理:
bash复制vim /etc/logrotate.d/redis
添加以下内容:
conf复制/var/log/redis.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 644 redis redis
}
9.3 监控Redis
使用redis-cli监控Redis状态:
bash复制redis-cli info
redis-cli info stats
redis-cli info replication
10. Redis集群配置(可选)
对于生产环境,建议配置Redis集群提高可用性。以下是主从复制的基本配置:
在主节点redis.conf中添加:
conf复制replica-read-only yes
在从节点redis.conf中添加:
conf复制replicaof <masterip> <masterport>
masterauth <master-password>
配置完成后需要重启Redis服务使配置生效。
我在实际部署Redis时发现,配置文件中的daemonize参数必须设为yes,否则Redis会随着终端关闭而停止。另外,生产环境中强烈建议配置密码认证和IP白名单,避免安全风险。对于内存管理,建议设置maxmemory并选择合适的淘汰策略,防止内存耗尽导致服务不可用。
