阿里云Linux服务器安装Redis完整教程(含安全配置与性能优化)

apphuang2026年06月11日 14:55:3713

阿里云Linux服务器安装Redis完整教程(含安全配置与性能优化)

Redis作为一款高性能的内存型NoSQL数据库,广泛应用于缓存、消息队列、数据存储等场景。阿里云ECS服务器是部署Redis的理想环境,本文将从环境准备、安装方式、配置优化、安全加固、服务管理到问题排查,全方位讲解阿里云Linux服务器安装Redis的完整流程,帮助新手快速上手,也为资深运维提供最佳实践参考。

一、前期准备:阿里云服务器与环境检查

1.1 阿里云ECS服务器选型与系统选择

在安装Redis前,需确保拥有一台正常运行的阿里云ECS服务器。Redis对服务器配置要求不高,但生产环境需合理选型:

  • 操作系统:推荐Alibaba Cloud Linux 3、CentOS 7/8、Ubuntu 20.04/22.04,本文以Alibaba Cloud Linux 3(CentOS兼容)为例,操作命令可兼容CentOS系统。
  • 配置建议:测试环境1核2G即可;生产环境建议2核4G及以上,内存是Redis的核心资源,优先保证内存充足,存储选择SSD提升持久化性能。
  • 网络:服务器需绑定公网IP,确保能外网访问,同时配置安全组开放必要端口。

需要先登录阿里云控制台,点击:阿里云控制台

1.2 远程连接服务器

阿里云ECS支持多种远程连接方式,推荐以下两种:

  1. 阿里云Workbench:控制台直接登录,无需额外工具,适合新手。
  2. SSH工具:Xshell、Putty、FinalShell等,通过公网IP+用户名(默认root)+密码或密钥连接。

连接成功后,执行以下命令更新系统软件包,确保环境最新:

sudo yum update -y

1.3 关闭防火墙或开放端口(关键)

Redis默认端口6379,若防火墙拦截,外部无法连接。阿里云服务器需同时配置系统防火墙阿里云安全组

1.3.1 系统防火墙配置(firewalld)

# 开放6379端口
sudo firewall-cmd --add-port=6379/tcp --permanent
# 重载防火墙生效
sudo firewall-cmd --reload
# 查看端口是否开放
sudo firewall-cmd --list-ports

1.3.2 阿里云安全组配置(必做)

进入阿里云ECS控制台,找到实例,点击安全组配置规则,入方向添加规则:

  • 协议类型:TCP
  • 端口范围:6379/6379
  • 授权对象:0.0.0.0/0(仅测试环境),生产环境建议指定固定IP,避免全网开放。

二、Redis安装:两种方式详解(源码编译+yum安装)

Redis安装主要有源码编译安装(推荐,自定义配置、版本灵活)和yum包管理器安装(简单快捷,适合快速部署)两种方式,下面分别详细讲解。

2.1 方式一:源码编译安装(推荐,生产环境首选)

源码编译安装可自由选择Redis版本,自定义安装路径,性能更优,是生产环境的主流选择。

2.1.1 安装编译依赖

Redis由C语言开发,编译需gcc、make等工具,执行以下命令安装依赖:

# 安装gcc、gcc-c++、make、tcl(测试依赖)
sudo yum install -y gcc gcc-c++ make tcl

验证依赖是否安装成功:

gcc --version
make --version

2.1.2 下载Redis源码包

Redis官网获取最新稳定版,本文以Redis 7.2.5为例,执行以下命令下载:

# 进入/usr/local/src目录(源码默认存放路径)
cd /usr/local/src
# 下载Redis源码包
sudo wget https://download.redis.io/releases/redis-7.2.5.tar.gz
# 解压源码包
sudo tar -zxvf redis-7.2.5.tar.gz
# 重命名目录(简化操作)
sudo mv redis-7.2.5 redis

2.1.3 编译Redis源码

进入解压后的目录,执行make编译,编译过程约3-5分钟,耐心等待:

# 进入Redis目录
cd /usr/local/src/redis
# 编译(默认编译所有模块)
make
# 编译测试(可选,验证编译是否成功)
make test

编译常见错误解决:

  • 错误1:cc: 未找到命令→ 未安装gcc,重新执行yum install -y gcc gcc-c++。
  • 错误2:jemalloc/jemalloc.h: 没有那个文件或目录→ 编译时指定内存分配器,执行make USE_JEMALLOC=no。
  • 错误3:make[1]: *** [adlist.o] 错误 1→ 执行make CFLAGS="-march=x86-64"重新编译。

2.1.4 安装Redis到指定路径

编译成功后,执行make install安装Redis到系统默认路径(/usr/local/bin),或自定义安装路径:

# 安装到默认路径(推荐)
sudo make install
# 自定义安装路径(如/usr/local/redis)
# sudo make PREFIX=/usr/local/redis install

验证安装是否成功:

# 查看Redis版本
redis-server --version
redis-cli --version

2.1.5 创建Redis目录结构(规范管理)

为方便管理配置文件、日志、数据,创建专用目录:

# 创建配置、日志、数据目录
sudo mkdir -p /etc/redis /var/log/redis /var/lib/redis
# 复制默认配置文件到/etc/redis
sudo cp /usr/local/src/redis/redis.conf /etc/redis/
# 修改目录权限(避免权限不足)
sudo chmod 755 /var/log/redis /var/lib/redis

2.2 方式二:yum安装(简单快捷,测试环境首选)

yum安装无需编译,一键部署,适合快速搭建测试环境,但版本可能不是最新,自定义配置灵活性较低。

2.2.1 安装EPEL源(Redis依赖)

# 安装EPEL源
sudo yum install -y epel-release
# 更新yum缓存
sudo yum makecache

2.2.2 一键安装Redis

# 安装Redis
sudo yum install -y redis
# 查看安装版本
redis-server --version

yum安装默认配置路径:/etc/redis.conf;数据路径:/var/lib/redis;日志路径:/var/log/redis。

三、Redis核心配置:安全与性能优化(重中之重)

Redis默认配置仅适合本地测试,公网部署必须修改核心配置,否则易被攻击、数据泄露。配置文件为/etc/redis/redis.conf,执行vi /etc/redis/redis.conf编辑。

3.1 基础网络配置(允许远程访问)

默认bind 127.0.0.1仅本地访问,需修改为允许所有IP或指定IP:

# 注释默认bind(仅本地)
# bind 127.0.0.1 ::1
# 允许所有IP访问(测试环境)
bind 0.0.0.0
# 仅允许指定IP访问(生产环境,推荐)
# bind 192.168.1.0/24 10.0.0.0/8

修改端口(可选,默认6379,生产环境建议修改为非默认端口,降低扫描风险):

# 默认端口6379,修改为6380
port 6380

3.2 安全配置(必做,防止攻击)

3.2.1 设置访问密码(核心安全措施)

默认无密码,公网部署极易被入侵,取消requirepass注释并设置强密码:

# 设置密码(替换为复杂密码,包含大小写、数字、特殊字符)
requirepass Redis@123456

3.2.2 关闭保护模式(远程访问必需)

保护模式默认开启,无密码且bind为0.0.0.0时会拒绝连接,需关闭:

# 关闭保护模式
protected-mode no

3.2.3 禁用危险命令(防止数据丢失)

禁用FLUSHDB、FLUSHALL、KEYS等危险命令,避免误操作或恶意删除数据:

# 禁用FLUSHDB
rename-command FLUSHDB ""
# 禁用FLUSHALL
rename-command FLUSHALL ""
# 禁用KEYS(生产环境必做,防止阻塞)
rename-command KEYS ""

3.3 性能优化配置(提升Redis吞吐量)

3.3.1 后台运行(守护进程模式)

默认前台运行,关闭终端后服务停止,需设置后台运行:

# 开启后台运行
daemonize yes

3.3.2 内存限制(防止占用过多系统内存)

Redis默认无内存限制,会占用所有可用内存,需根据服务器内存设置:

# 最大内存(服务器内存4G,设置3G,预留系统内存)
maxmemory 3gb
# 内存淘汰策略(内存满时删除数据,推荐allkeys-lru)
maxmemory-policy allkeys-lru

3.3.3 持久化配置(数据安全,RDB+AOF)

Redis默认RDB持久化(快照),建议开启AOF(日志),兼顾性能与数据安全:

# RDB持久化策略(默认,900秒1个key、300秒10个key、60秒10000个key)
save 900 1
save 300 10
save 60 10000
# AOF持久化(开启,数据更安全)
appendonly yes
# AOF同步策略(everysec:每秒同步,平衡性能与安全)
appendfsync everysec
# AOF文件重写策略(防止文件过大)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3.3.4 网络优化(提升并发连接数)

# 最大客户端连接数(默认10000,高并发可调整为20000)
maxclients 20000
# TCP backlog(默认511,高并发调整为2048)
tcp-backlog 2048
# 客户端空闲超时(300秒,防止僵尸连接)
timeout 300

3.4 日志与数据路径配置(规范管理)

# 日志文件路径
logfile "/var/log/redis/redis.log"
# 数据文件存放路径
dir "/var/lib/redis"
# RDB文件名
dbfilename dump.rdb
# AOF文件名
appendfilename "appendonly.aof"

配置修改完成后,按Esc键,输入:wq保存退出。

四、Redis服务管理:开机自启与常用命令

通过systemd管理Redis服务,实现开机自启、一键启动/停止/重启,方便运维管理。

4.1 创建systemd服务文件(源码安装必做,yum安装自动生成)

执行vi /etc/systemd/system/redis.service创建服务文件,内容如下:

[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

创建redis用户(非root运行,提升安全性):

# 创建redis用户和组
sudo groupadd redis
sudo useradd -g redis redis
# 授权目录权限
sudo chown -R redis:redis /etc/redis /var/log/redis /var/lib/redis

4.2 常用服务命令

# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动Redis服务
sudo systemctl start redis
# 设置开机自启
sudo systemctl enable redis
# 查看服务状态(验证是否启动成功)
sudo systemctl status redis
# 停止服务
sudo systemctl stop redis
# 重启服务(修改配置后必执行)
sudo systemctl restart redis

启动成功后,状态显示active (running)。

4.3 本地连接测试

执行以下命令连接Redis,验证配置是否生效:

# 本地连接(默认端口6379)
redis-cli
# 输入密码验证
AUTH Redis@123456
# 测试连通性(返回PONG表示成功)
PING
# 退出连接
EXIT

五、远程连接Redis:客户端工具与代码连接

Redis部署完成后,可通过客户端工具或代码远程连接,进行数据操作。

5.1 客户端工具连接(RDM、Another Redis Desktop Manager)

以Another Redis Desktop Manager为例,连接配置:

  • 主机:阿里云服务器公网IP
  • 端口:6379(或自定义端口)
  • 密码:配置的requirepass密码
  • 连接超时:默认即可

点击连接,成功后可查看Redis数据、执行命令。

5.2 Java代码连接(Jedis示例)

引入Jedis依赖(Maven):

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.4.3</version>
</dependency>

Java连接代码:

import redis.clients.jedis.Jedis;

public class RedisTest {
    public static void main(String[] args) {
        // 连接Redis(公网IP、端口、密码)
        try (Jedis jedis = new Jedis("123.45.67.89", 6379)) {
            // 输入密码
            jedis.auth("Redis@123456");
            // 测试连通性
            System.out.println("PING: " + jedis.ping());
            // 设置key-value
            jedis.set("name", "阿里云Redis");
            // 获取key
            System.out.println("name: " + jedis.get("name"));
        }
    }
}

六、常见问题排查:安装与连接错误解决

6.1 启动失败:Can't allocate memory

原因:系统内存不足,或vm.overcommit_memory参数未设置为1。

解决

# 修改内核参数
echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
# 生效
sysctl -p
# 关闭透明大页(THP)
echo never > /sys/kernel/mm/transparent_hugepage/enabled

6.2 远程连接超时:无法连接到服务器

原因:安全组/防火墙未开放端口、bind配置错误、密码错误。

解决

  1. 检查阿里云安全组入方向是否开放6379端口。
  2. 检查系统防火墙是否开放端口:firewall-cmd --list-ports。
  3. 确认bind配置为0.0.0.0或指定IP,而非127.0.0.1。
  4. 验证密码是否正确,无密码时关闭protected-mode。

6.3 编译错误:make: *** [all] Error 2

原因:依赖缺失或系统环境不兼容。

解决:重新安装依赖yum install -y gcc gcc-c++ make tcl,清理编译缓存make clean后重新编译。

6.4 数据丢失:重启后数据消失

原因:未开启持久化(RDB/AOF),或持久化路径配置错误。

解决:开启RDB和AOF持久化,检查dir配置路径是否正确,重启前执行save手动持久化。

七、总结与最佳实践

本文详细讲解了阿里云Linux服务器安装Redis的完整流程,包括环境准备、源码编译与yum安装、核心安全与性能配置、systemd服务管理、远程连接与问题排查。总结生产环境最佳实践:

  1. 优先选择源码编译安装,自定义版本与配置,性能更优。
  2. 安全必做:设置强密码、修改默认端口、禁用危险命令、限制IP访问
  3. 性能优化:开启后台运行、合理设置内存限制、RDB+AOF持久化、优化网络参数
  4. 服务管理:使用systemd管理,非root用户运行,开机自启,便于运维。
  5. 数据安全:定期备份RDB/AOF文件,开启持久化,防止数据丢失。

通过以上步骤,可在阿里云Linux服务器上快速部署稳定、安全、高性能的Redis服务,满足缓存、数据存储等业务需求。

八、常见问答

Q1:阿里云Linux服务器安装Redis,源码编译和yum安装哪个好?

A1:生产环境推荐源码编译安装,可自由选择版本、自定义安装路径和配置,性能更优;测试环境可选择yum安装,一键部署,简单快捷。

Q2:Redis默认端口6379,生产环境需要修改吗?

A2:建议修改,默认端口易被端口扫描工具探测,修改为非默认端口可降低被攻击风险,同时需同步修改安全组和防火墙端口。

Q3:Redis设置密码后,本地连接需要输入密码吗?

A3:需要,无论本地还是远程连接,配置密码后连接都需执行AUTH命令输入密码,否则无法进行数据操作。

Q4:Redis启动时提示内存不足,如何解决?

A4:修改内核参数vm.overcommit_memory=1,关闭透明大页THP,同时通过maxmemory参数限制Redis内存占用,预留系统内存。

Q5:Redis重启后数据丢失,是什么原因?

A5:主要原因是未开启RDB和AOF持久化,Redis纯内存存储的数据重启会清空,也可能是持久化文件路径配置错误。

Q6:如何禁止Redis执行FLUSHALL命令,防止数据被误删?

A6:在redis.conf配置文件中添加rename-command FLUSHALL "",即可禁用该高危命令,也可使用相同方式禁用FLUSHDB、KEYS等命令。

相关文章

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

作为深耕阿里云代理领域 10 年的 “老司机”,经常被问到:“买阿里云服务器能便宜吗?有没有优惠价格?” 今天就用实打实的行业经验告诉你:不仅能便宜,选对渠道还能省一大笔! 这篇文章带你解锁阿里云服务…

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

阿里云代理商有哪些?阿里云代理返点是真的么?

阿里云代理商有哪些?阿里云代理返点是真的么?

一,阿里云代理商基本介绍阿里云代理商通俗一点,就是指从事阿里云云服务器,云数据库等阿里云公有云产品销售的代理商,每销售一件阿里云公有云产品出去,阿里云给予该代理商一定比例的提成。在阿里云官方定义中,这…

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

一、阿里云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异阿里云构建了多层次的代理生态体系,涵盖全国总代理、区域核心代理、行业ISV(独立软件开发商)、金牌/银牌认证代理及标准代理五大核心…