阿里云Linux服务器安装Redis完全指南:从源码编译到生产级配置
引言:为什么选择在阿里云ECS上部署Redis
Redis作为一款高性能的内存键值数据库,凭借其卓越的读写速度、丰富的数据结构支持和灵活的持久化机制,早已成为现代互联网应用架构中不可或缺的基础组件。从缓存加速、会话存储到消息队列、实时排行榜,Redis的身影无处不在。而阿里云ECS(弹性计算服务)凭借其稳定的基础设施、灵活的资源调配和与Redis天然的亲和性,成为部署Redis服务的理想平台。
在阿里云环境中部署Redis,既可以享受云服务器带来的弹性伸缩便利,又能充分利用阿里云针对Redis应用所做的专项优化。例如,Alibaba Cloud Linux 2操作系统内置了Redis 6.0.5和Redis 3.2.12的yum源,并且针对Redis应用进行了整体性能提升20%以上的专项调优。无论你是刚开始接触Redis的新手,还是寻求生产级部署最佳实践的运维工程师,本文都将为你提供一份从零开始的完整操作指南。
需要先登录阿里云控制台,点击:阿里云控制台
第一章:环境准备——打好部署的基础
1.1 ECS服务器选型与操作系统选择
在安装Redis之前,首先需要确保拥有一台正常运行的阿里云ECS服务器。Redis对服务器的硬件要求并不苛刻,但在生产环境中仍需根据实际业务负载进行合理选型。
操作系统方面,推荐选择Alibaba Cloud Linux 3、CentOS 7/8或Ubuntu 20.04/22.04。其中,Alibaba Cloud Linux是阿里云官方推出的定制化Linux发行版,对Redis等常见应用做了大量底层优化,是部署Redis的首选操作系统。本文的操作命令将以Alibaba Cloud Linux 3(兼容CentOS)为例进行演示,绝大多数命令在CentOS和RHEL系列系统中同样适用。
硬件配置方面,测试环境1核2GB内存即可满足基本需求;生产环境建议至少2核4GB及以上配置。内存是Redis的核心资源,所有的数据都存储在内存中,因此优先保证内存容量充足至关重要。存储方面,建议选择SSD云盘以提升持久化操作的I/O性能。
1.2 远程连接ECS实例
阿里云ECS支持多种远程连接方式,最常用的有以下两种:
- 阿里云Workbench:直接在控制台点击连接按钮即可登录,无需安装任何额外工具,适合新手快速上手。
- SSH工具:使用Xshell、Putty、FinalShell等终端工具,通过公网IP加上用户名(默认为root)和密码或密钥对进行连接。
连接成功后,建议首先执行系统更新命令,确保软件包列表处于最新状态:
sudo yum update -y1.3 防火墙与安全组配置(关键步骤)
Redis默认监听6379端口。如果防火墙或安全组未正确配置,外部客户端将无法连接到Redis服务。在阿里云环境中,需要同时处理两个层面的网络访问控制:系统防火墙和阿里云安全组。
1.3.1 系统防火墙配置
如果系统使用firewalld作为防火墙管理工具,执行以下命令开放6379端口:
sudo firewall-cmd --add-port=6379/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports第一条命令永久开放6379端口的TCP访问,第二条命令重载防火墙配置使其生效,第三条命令用于验证端口是否已成功开放。
1.3.2 阿里云安全组配置(必做)
阿里云安全组是云平台层面的网络访问控制机制,即使系统防火墙已经开放端口,如果安全组未配置入方向规则,外部流量仍然无法到达ECS实例。配置步骤如下:
- 登录阿里云控制台,进入ECS管理页面。
- 找到目标实例,点击“安全组”进入安全组配置页面。
- 点击“配置规则”,在“入方向”中添加一条新规则。
- 协议类型选择TCP,端口范围填写6379/6379。
- 授权对象:测试环境可填写0.0.0.0/0(允许所有IP访问),但生产环境强烈建议指定具体的客户端IP或IP段,避免将Redis端口暴露在整个互联网中。
第二章:Redis安装——两种方式深度解析
在阿里云Linux服务器上安装Redis主要有两种方式:源码编译安装和yum包管理器安装。两种方式各有优劣,适用场景不同,下面逐一详细讲解。
2.1 方式一:源码编译安装(生产环境推荐)
源码编译安装允许开发者自由选择Redis的版本、自定义安装路径和编译参数,能够获得更好的性能和更大的灵活性,是生产环境的主流选择。
2.1.1 安装编译依赖
Redis由C语言编写,编译过程需要gcc编译器和make构建工具。执行以下命令安装必要的依赖包:
sudo yum install -y gcc gcc-c++ make tcl其中,gcc是C语言编译器,make用于执行Makefile构建脚本,tcl是Redis单元测试所依赖的工具。安装完成后,可以通过以下命令验证依赖是否安装成功:
gcc --version
make --version2.1.2 下载Redis源码包
从Redis官方网站或GitHub仓库获取最新稳定版的源码包。本文以Redis 7.4.8为例进行演示:
cd /usr/local/src
sudo wget https://download.redis.io/releases/redis-7.4.8.tar.gz如果wget命令不可用,可以先用yum安装:sudo yum install -y wget。下载完成后,解压源码包并进入解压后的目录:
sudo tar -zxvf redis-7.4.8.tar.gz
cd redis-7.4.82.1.3 编译与安装
Redis的源码编译不需要执行传统的configure脚本,直接运行make命令即可:
make编译过程可能需要几分钟时间,具体取决于服务器的CPU性能。编译完成后,强烈建议运行测试套件以验证编译结果的正确性:
make test测试通过后,执行安装命令将Redis安装到指定目录。默认安装路径为/usr/local/bin,也可以通过PREFIX参数自定义安装位置:
sudo make install PREFIX=/usr/local/redis安装完成后,在/usr/local/redis/bin目录下可以看到redis-server(服务端)、redis-cli(客户端)、redis-benchmark(性能测试工具)等可执行文件。
2.1.4 配置文件部署
源码目录中包含了默认的配置文件redis.conf,需要将其复制到专门的管理目录以便后续修改和维护:
sudo mkdir -p /usr/local/redis/conf
sudo cp redis.conf /usr/local/redis/conf/至此,源码编译安装的核心步骤已经完成。接下来在第四章中,我们将深入讲解如何对配置文件进行生产级的参数调优。
2.2 方式二:yum快速安装(适合快速验证)
如果只是用于开发测试或快速验证,使用yum包管理器安装Redis是最便捷的方式。Alibaba Cloud Linux 2内置了Redis 6.0.5和Redis 3.2.12的yum源,可以直接通过yum命令完成安装。
2.2.1 安装Redis
执行以下命令即可完成Redis的安装:
sudo yum install -y redis如果需要安装特定版本,Alibaba Cloud Linux 2用户可以使用以下命令:
# 安装Redis 6.0.5
sudo yum install -y alinux-release-experimentals && \
sudo yum install -y redis-6.0.5
# 安装Redis 3.2.12
sudo yum install -y alinux-release-experimentals && \
sudo yum install -y redis-3.2.122.2.2 启动与自启配置
yum安装方式会自动创建systemd服务文件,因此可以直接使用systemctl命令管理Redis服务:
# 启动Redis服务
sudo systemctl start redis
# 设置开机自启动
sudo systemctl enable redis
# 查看服务状态
sudo systemctl status redisyum安装的配置文件通常位于/etc/redis.conf,同样可以在第四章的指导下进行参数调优。
第三章:生产级配置优化——让Redis发挥最佳性能
无论是通过源码编译还是yum安装的Redis,默认配置都不适合直接用于生产环境。本章将详细讲解核心配置参数的优化方法,帮助你把Redis调整到最佳运行状态。
3.1 基础运行配置
编辑Redis配置文件(源码编译方式为/usr/local/redis/conf/redis.conf,yum方式为/etc/redis.conf),调整以下基础参数:
# 后台运行(以守护进程方式运行,避免占用终端)
daemonize yes
# 监听地址(生产环境建议绑定内网IP,而非0.0.0.0)
bind 127.0.0.1 172.16.0.10
# 服务端口(生产环境建议修改默认端口,避免被扫描)
port 6379
# PID文件路径
pidfile /var/run/redis.pid
# 日志文件路径
logfile /var/log/redis/redis.log
# 持久化数据存储目录
dir /var/lib/redis关于bind参数的特别说明:如果Redis只需要被同一台服务器上的应用访问,绑定127.0.0.1即可。如果需要被其他服务器访问,应绑定ECS实例的内网IP地址。在阿里云环境中,不同ECS实例之间通过内网通信不仅延迟更低,而且完全免费,因此生产环境应优先使用内网IP进行通信。
3.2 内存管理配置
内存是Redis最核心的资源,合理的内存管理配置可以防止Redis因内存耗尽而导致系统崩溃。
# 设置最大内存上限(建议设置为服务器总内存的50%-70%)
maxmemory 2GB
# 内存淘汰策略
maxmemory-policy volatile-lrumaxmemory参数用于限制Redis可使用的最大内存量。当达到这个上限时,Redis会根据maxmemory-policy指定的策略淘汰部分数据。常用的淘汰策略包括:
- volatile-lru:从设置了过期时间的key中淘汰最近最少使用的(推荐生产环境使用)
- allkeys-lru:从所有key中淘汰最近最少使用的
- volatile-ttl:从设置了过期时间的key中淘汰即将过期的
- noeviction:不淘汰任何数据,写入操作返回错误
3.3 持久化配置
Redis提供了两种持久化机制:RDB(Redis DataBase)快照和AOF(Append Only File)日志。两者可以单独使用,也可以同时启用形成混合持久化方案。
3.3.1 RDB配置
RDB通过在指定时间间隔内将内存中的数据快照写入磁盘,实现数据的持久化。
# RDB持久化开关
save 900 1
save 300 10
save 60 10000
# RDB文件名
dbfilename dump.rdb
# 压缩RDB文件(节省磁盘空间,但会消耗CPU)
rdbcompression yes以上配置的含义是:900秒内至少有1个key被修改则触发快照,300秒内至少有10个key被修改则触发快照,60秒内至少有10000个key被修改则触发快照。
3.3.2 AOF配置
AOF通过记录所有写操作命令来实现持久化,数据安全性更高,但文件体积相对较大。
# 开启AOF持久化
appendonly yes
# AOF文件名
appendfilename appendonly.aof
# 同步策略:always(每次写入都同步)、everysec(每秒同步)、no(由操作系统决定)
appendfsync everysec生产环境推荐使用everysec策略,在性能和数据安全之间取得良好平衡。
3.3.3 混合持久化(推荐)
从Redis 4.0开始,支持混合持久化模式,即在AOF重写时将RDB快照嵌入AOF文件头部。这种模式兼顾了RDB的快速恢复能力和AOF的数据完整性。
# 开启混合持久化(需要Redis 4.0及以上版本)
aof-use-rdb-preamble yes当同时开启RDB和AOF时,Redis重启时会优先加载AOF文件来恢复数据,因为AOF通常包含更完整的数据。
第四章:安全加固——守护你的Redis数据
Redis在设计之初主要面向可信的内部网络环境,默认配置的安全性较为薄弱。当部署在云环境中时,必须进行全面的安全加固。
4.1 设置密码认证
为Redis设置访问密码是最基本也是最重要的安全措施。在配置文件中添加或修改以下配置:
requirepass your_strong_password请务必使用足够复杂的密码,建议包含大小写字母、数字和特殊字符,长度不少于16位。设置密码后,客户端连接时需要执行AUTH命令进行认证:
redis-cli -h 127.0.0.1 -p 6379 -a your_strong_password4.2 绑定内网IP与禁用公网暴露
在配置文件中将bind参数设置为内网IP地址,避免Redis直接暴露在公网:
bind 172.16.0.10如果确实需要从公网访问,务必配合安全组规则限制来源IP,并启用密码认证。
4.3 禁用危险命令
Redis提供了FLUSHALL、FLUSHDB、CONFIG等危险命令,这些命令在生产环境中可能造成数据丢失或配置篡改。可以通过重命名的方式禁用它们:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""将命令重命名为空字符串即可彻底禁用该命令。如果某些命令仍需使用但不想被随意调用,可以重命名为一个难以猜测的字符串。
4.4 保护模式配置
Redis的保护模式(protected-mode)在默认情况下是开启的。当保护模式开启且满足以下条件时,Redis只允许本地回环地址(127.0.0.1)连接:
- 服务器未使用bind指令绑定到具体IP
- 未设置密码(requirepass为空)
生产环境的推荐配置是:设置密码并绑定内网IP,同时保持protected-mode yes。
protected-mode yes第五章:服务管理——让Redis稳定运行
5.1 手动启动与停止
源码编译安装的Redis,可以通过以下命令手动启动:
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf停止Redis服务可以使用redis-cli执行shutdown命令:
/usr/local/redis/bin/redis-cli -a your_password shutdown5.2 配置systemd服务(推荐)
为了便于管理,建议为源码编译安装的Redis创建systemd服务文件。创建/etc/systemd/system/redis.service文件,内容如下:
[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/conf/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -a your_password shutdown
Restart=always
[Install]
WantedBy=multi-user.target创建服务文件后,执行以下命令使其生效并设置开机自启动:
sudo systemctl daemon-reload
sudo systemctl enable redis
sudo systemctl start redis
sudo systemctl status redis建议创建一个专用的redis系统用户来运行Redis服务,以提高安全性。创建用户的命令如下:
sudo useradd -r -s /sbin/nologin redis
sudo chown -R redis:redis /usr/local/redis
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /var/log/redis第六章:性能测试与验证
6.1 验证Redis安装是否成功
安装完成后,首先使用redis-cli进行基本的连接测试:
/usr/local/redis/bin/redis-cli -a your_password ping如果返回PONG,表示Redis服务正常运行且密码认证通过。进一步执行读写操作验证:
/usr/local/redis/bin/redis-cli -a your_password
set test_key "hello redis"
get test_key6.2 使用redis-benchmark进行性能压测
redis-benchmark是Redis自带的性能测试工具,可以模拟多个客户端并发发送请求,评估Redis在不同负载下的性能表现。基本用法如下:
/usr/local/redis/bin/redis-benchmark -h 127.0.0.1 -p 6379 -a your_password -c 50 -n 10000参数说明:
- -h:Redis服务器地址
- -p:Redis服务端口
- -a:认证密码
- -c:并发客户端数量
- -n:总请求数量
测试完成后,redis-benchmark会输出各类操作的每秒请求数(QPS)、平均延迟、百分位延迟等详细指标,帮助评估Redis实例的性能是否满足业务需求。
在阿里云环境中,可以结合ECS实例的规格进行针对性的性能调优。例如,在g9i.8xlarge实例上通过vCPU绑核优化,可以将Redis的QPS提升26%。对于生产环境,建议在业务上线前进行充分的压力测试,根据测试结果调整配置参数。
第七章:常见问题与排错指南
7.1 远程连接失败
这是阿里云Redis部署中最常见的问题。排查思路如下:
- 确认Redis服务是否正常运行:
ps -ef | grep redis - 确认配置文件中的bind参数是否包含了客户端的IP地址或0.0.0.0
- 确认是否设置了密码,客户端是否正确提供了密码
- 确认阿里云安全组是否开放了6379端口
- 确认系统防火墙是否开放了6379端口
7.2 编译错误:jemalloc/jemalloc.h: No such file or directory
这个错误通常是由于之前的编译残留文件导致的。解决方法是在源码目录执行清理命令后重新编译:
make distclean
make7.3 端口已被占用
启动Redis时如果出现"Address already in use"错误,说明6379端口已被其他进程占用。使用以下命令查找占用端口的进程:
netstat -tlnp | grep 6379找到进程ID后可以kill掉,或者修改Redis配置文件中的port参数使用其他端口。
7.4 内存碎片问题
长时间运行的Redis实例可能产生内存碎片,导致实际内存使用量超过maxmemory设置。可以通过以下命令查看内存碎片率:
redis-cli -a your_password info memory | grep mem_fragmentation_ratio如果碎片率超过1.5,建议重启Redis实例或使用MEMORY PURGE命令(需要Redis 4.0以上版本)进行清理。
总结:从安装到上线的完整路径
在阿里云Linux服务器上安装Redis虽然看似简单,但要做好生产级部署,需要在安装方式选择、配置参数调优、安全加固、服务管理和性能测试等各个环节都做到位。本文从环境准备开始,详细介绍了源码编译和yum两种安装方式的完整步骤,深入讲解了内存管理、持久化策略、密码认证等核心配置,并提供了systemd服务管理和常见问题排错的方法。
无论你选择源码编译安装以获得最大的灵活性和性能,还是选择yum安装以追求快速和便捷,都请务必重视安全配置——设置强密码、绑定内网IP、禁用危险命令、合理配置安全组,这些都是保护Redis数据安全不可或缺的环节。在性能方面,合理设置maxmemory和淘汰策略、根据业务需求选择RDB或AOF持久化方案,能够让Redis在稳定运行的同时发挥最佳性能。
希望这篇指南能够帮助你在阿里云上顺利搭建出一个安全、稳定、高性能的Redis服务,为你的应用提供坚实的数据缓存基础设施。
常见问题问答
问1:阿里云ECS上安装Redis,源码编译和yum安装哪种方式更好?
答:源码编译安装允许自由选择版本、自定义安装路径和编译参数,性能更优,是生产环境的首选。yum安装方式简单快捷,适合开发测试环境或快速验证场景。Alibaba Cloud Linux 2内置了Redis 6.0.5和3.2.12的yum源,安装非常方便。
问2:Redis安装完成后,为什么从外部连接不上?
答:远程连接失败通常有三个原因:一是阿里云安全组未开放6379端口;二是系统防火墙未开放6379端口;三是Redis配置文件中的bind参数未包含客户端的IP地址,或protected-mode阻止了非本地连接。请按顺序逐一排查。
问3:生产环境中Redis的内存应该设置多大?淘汰策略怎么选?
答:maxmemory建议设置为服务器总内存的50%-70%,预留一部分内存给操作系统和其他进程。淘汰策略推荐volatile-lru,仅淘汰设置了过期时间的key中最近最少使用的数据。如果所有key都可以被淘汰,也可以使用allkeys-lru。
问4:RDB和AOF两种持久化方式应该怎么选?
答:RDB适合做冷备份和灾难恢复,文件体积小,恢复速度快,但可能丢失最后一次快照后的数据。AOF数据安全性更高,最多丢失一秒的数据(everysec策略),但文件体积较大。生产环境推荐同时开启RDB和AOF,并启用混合持久化模式(aof-use-rdb-preamble yes),兼顾恢复速度与数据完整性。
问5:如何验证Redis的性能是否达标?
答:使用Redis自带的redis-benchmark工具进行压力测试。通过模拟多个并发客户端发送请求,可以获取QPS、平均延迟、百分位延迟等性能指标。在阿里云环境中,还可以结合ECS实例规格进行vCPU绑核等高级优化。
问6:Redis的密码在配置文件中是明文存储的,有安全风险吗?
答:Redis配置文件中的requirepass确实是明文存储的。建议采取以下措施降低风险:将配置文件权限设置为600(仅所有者可读写),使用专门的redis系统用户运行服务,并定期更换密码。对于更高安全要求的场景,可以考虑使用阿里云的云数据库Redis版(Tair),它提供了更完善的安全管控机制。



