为什么要安装redis

在做后端开发的时候一定会知道一个概念就是缓存,在实际开发中,很多数据是不需要储存在数据库里面,比如验证码的key,手机登录的key,这些需要短时间储存的数据都不适合储存在数据库里面,频繁访问数据库会带来性能问题,尤其是在高并发场景下,数据库的读写压力会非常大。为了提高系统性能、减轻数据库负载,我们通常会将一些访问频率高但变动不频繁的数据存储在缓存中,以加快响应速度。

这时候就需要一个高效、稳定的缓存中间件,而 Redis 就是目前最主流的选择之一,原因包括:

  • 性能极高:Redis是基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。非常适合储存这种键值对的数据。
  • 支持分布式和高可用:Redis 支持主从复制、哨兵机制(Sentinel)和集群部署,适合构建大规模、高可用系统。
  • 多种数据结构:Redis支持多种数据类型并提供了相应的操作方法,可以满足不同场景下的需求。
  • 持久化:虽然 Redis 是内存数据库,但它支持将数据持久化到磁盘,防止数据意外丢失。

因此,在后端开发中,如果你希望提升数据访问效率、优化系统性能、构建高并发场景下的稳定应用,安装并使用 Redis 几乎是标配

如何选择redis的版本

当我们打开redis的官网,我们会发现redis是收费的,没错redis有着多个版本,其中包括开源免费的版本,也有收费的企业级版本。具体有什么区别呢?免费的是本地部署的没有官方的一些服务支持,付费的是使用redis已经部署好的服务,并且有什么问题redis可以提供一些服务支持,就相当于是买已经部署好的服务,并且有售后支持。对于开发者来说,无论是开发个人程序还是公司程序,在个人电脑上安装免费的即可,所以我们选择免费的社区版即可。

我们打开redis官网的文档来看一下怎么安装,我们点击Install Redis,就可以看见对应重装系统的安装方法了。

image-20250509110311557
image-20250509110311557

我们选择对应的系统,例如Windows,点进去会发现redis官方并不支持Windows系统。官网有着这么一句话

Redis is not officially supported on Windows. However, you can install Redis on Windows for development by following the instructions below.

image-20250509110436690
image-20250509110436690

但是我们可以使用wsl来安装reids,也就是使用Linux安装,继续点开Linux的安装方法,里面有很多Linux分支的安装教程,不过大多数是通过包管理工具来安装的,这样很方便也很简单

image-20250509111050920
image-20250509111050920

那么,官网已经有了通过包管理工具的快捷方法,为什么还要写一篇这样的文章呢?

首先,Redis 官方不支持 Windows,是因为 Redis 使用的是大量基于 Linux 的底层系统调用(如 epoll、fork、虚拟内存映射等),这些在 Windows 上并不原生支持,所以 Redis 官方从 4.0 版本开始就不再维护 Windows 的官方编译版本。这意味着即使你能在 Windows 上“装上 Redis”,也不一定稳定或性能达标,因此官方明确指出:Windows 上仅建议用于开发或学习用途,不适合部署到生产环境

其次,虽然包管理工具安装非常方便,但很多新手可能:

  • 不知道如何使用包管理工具(如 apt、brew、yum 等)
  • 不清楚如何确认 Redis 是否安装成功
  • 不知道 Redis 默认配置文件在哪、默认端口是多少
  • 不清楚如何启动、停止、查看状态,甚至设置开机自启

而这些问题,恰恰是新手在“安装完成后”的第一道门槛。因此本文目的不仅是“装上 Redis”,而是:

  • 告诉你为什么这么装
  • 教你如何验证是否装对
  • 解释安装过程中的关键步骤和原理
  • 为后续使用 Redis 打下基础

所以说,这篇文章的意义是为了帮助你理解Redis 安装的过程与原理,而不是机械地复制命令行。

怎么不使用包管理工具安装

使用包管理工具的好处就是它会帮我们搞定一切,包括redis需要的一些环境安装之类的,如果我们手动安装,我们需要做一些安装前的准备。

安装前的准备

  1. 安装常用依赖工具(以 CentOS 为例)

    手动编译 Redis 源码,需要安装编译工具,如 gcc、make和wget等工具

    Bash
    sudo yum groupinstall "Development Tools" -y
    sudo yum install gcc tcl wget -y
    image-20250509113004480
    image-20250509113004480
  2. 下载 Redis 源码

    前往 Redis 官网获取最新版本下载地址,或使用如下命令(以 7.2.4 为例)

    Bash
    cd /usr/local/src
    sudo wget http://download.redis.io/releases/redis-7.2.4.tar.gz
    image-20250509113248353
    image-20250509113248353
  3. 解压并进入源码目录

Bash
sudo tar xzf redis-7.2.4.tar.gz
cd redis-7.2.4
解压
解压

编译安装redis

  1. 编译 Redis

    先编译redis,在redis目录使用下面的命令来编译,请确保安装了编译工具gcc make等

    Bash
    sudo make
    image-20250509114134234
    image-20250509114134234

    等它跑完码就是编译完成了,这个时间视机器性能为准,没有固定的时间,耐心等待一下,编译完成以后,我们测试一下编译的结果是否正确,这个测试比较耗时间,如果是开发使用可以不去测试

    Bash
    sudo make test
    image-20250509114914177
    image-20250509114914177

    还是能检测出来一些问题的,我们来分析一下这些问题

    • Process title set as expected:测试进程标题设置失败,不影响使用
    • Crash report generated on SIGABRT:Redis 崩溃日志没有生成或格式不匹配(测试环境触发 SIGABRT),不影响使用
    • Active defrag - AOF loading:主动内存整理测试中延迟超过预期,不影响使用

    这些都是一些无关紧要的问题,虽然无关紧要,但是我觉得测试还很有必要的

  2. 安装redis服务

    BASK
    sudo make install
    image-20250509115319775
    image-20250509115319775

    它会把一些redis的服务安装到系统中,比如 redis-server 和 redis-cli 会被安装到 /usr/local/bin/ 目录。

  3. 测试运行Redis

    Redis 编译完成后,我们就可以直接运行 Redis 服务器

    Bash
    redis-server
    image-20250509215726991
    image-20250509215726991

    也可以打开另一个终端窗口,用客户端连接

    Bash
    redis-cli
    image-20250509215821619
    image-20250509215821619

    此时 Redis 是以默认配置文件(内置默认配置)启动,并且是前台运行的。这种方式适合临时测试或开发调试,但是在实际部署中不推荐使用,原因有以下几点

    • 关闭终端会导致 Redis 服务停止
    • 没有日志文件、后台守护、内存限制等管理机制
    • 无法通过配置文件定制绑定 IP、安全选项、持久化策略等

    所以我们需要修改 Redis 配置文件并且配置 Systemd 服务

修改 Redis 配置文件

  1. 拷贝配置文件到 /etc/redis/

    Bash
    sudo mkdir /etc/redis
    sudo cp redis.conf /etc/redis/
  2. 修改配置文件

    配置文件自己按需修改,这里列几个比较常用的修改项

    配置项 默认值 建议修改值 说明
    daemonize no yes(systemd服务不需要改) 是否以后台守护进程运行(生产环境建议设为 yes)
    bind 127.0.0.1 0.0.0.0(按需开放) 绑定的 IP 地址,0.0.0.0 表示所有地址(需配合密码认证加强安全)
    requirepass 注释掉 your_password 设置访问密码(强烈建议开启以增强安全)
    appendonly no yes 是否开启 AOF 持久化(防止数据丢失)
    logfile ""(输出到 stdout) /var/log/redis/redis.log 日志文件路径
    save 多条默认触发规则 可保留默认或自定义 RDB 快照持久化触发条件,单位:秒 & 次数
    maxmemory 未设置(使用所有内存) 512mb(或根据机器设置) Redis 可用最大内存限制,超出将触发淘汰策略
    maxmemory-policy noeviction allkeys-lru 内存不足时的数据淘汰策略(如 LRU、LFU 等)
    protected-mode yes no(配合 bind 和密码) 保护模式,限制外部连接(关闭需小心)

    配置完成可以测试一下

    Bash
    redis-server /etc/redis/redis.conf

配置 Systemd 服务

每次都手动启动并且还得带配置文件的路径还是太麻烦了,直接使用ststemctl命令启动或者开机自启就方便很多

  1. 创建 systemd 服务文件

    Bash
    sudo vim /etc/systemd/system/redis.service
  2. 填入以下内容(注意路径是否与你实际一致)

    INI
    [Unit]Description=Redis In-Memory Data StoreAfter=network.target [Service]ExecStart=/usr/local/bin/redis-server /etc/redis/redis.confExecStop=/usr/local/bin/redis-cli shutdownRestart=alwaysUser=root [Install]WantedBy=multi-user.target
  3. 重新加载 systemd 并启用 Redis 服务

    Bash
    sudo systemctl daemon-reexec
    sudo systemctl daemon-reload
    sudo systemctl enable redis
    sudo systemctl start redis
  4. 查看状态

    Bash
    sudo systemctl status redis
    image-20250509224633016
    image-20250509224633016

    看见绿色的active (running)就是正常运行了,我们再使用redis-cli来测试一下

    image-20250509224733334
    image-20250509224733334

    这样就没有问题了

总结一下我们干了什么

从最开始的为什么要安装 Redis,我们明确了缓存在后端开发中的重要性,以及 Redis 在性能、功能、稳定性等方面的优势。

之后我们一步步完成了

  • 安装系统所需的编译依赖工具(如 gcc、make、wget 等)
  • 下载 Redis 源码,解压并编译安装
  • 使用 make test 测试编译是否成功(即使有些警告也知道了如何判断是否可以忽略)
  • 安装 Redis 到系统目录,并通过 redis-server 和 redis-cli 测试基本运行是否正常
  • 将 Redis 配置文件复制到标准目录 /etc/redis/,并进行了常见的配置项修改(如绑定地址、密码认证、持久化、内存限制等)
  • 配置了 Redis 的 systemd 启动服务文件,实现了 systemctl 启动、停止、查看状态、设置开机自启等功能
  • 最终我们使用 systemd 启动 Redis 并通过 redis-cli 测试连接,验证服务是否正常运行

整个过程中,我们不仅仅是“装上了 Redis”,更重要的是掌握了它的工作原理、配置方法和部署技巧,为之后开发中使用 Redis 打下了坚实基础。

如果完整的看到来这里,那你就不再是一个仅靠复制粘贴命令的人了,而是真正学会了 Redis 安装的全流程。最后,附上一个一键安装的sh脚本。

将下面的代码修改后,保存为 install_redis.sh, 后执行:sudo sh install_redis.sh

Shell
#!/bin/bash

# Redis 版本
REDIS_VERSION=7.2.4
REDIS_PORT=6379
REDIS_PASSWORD="your_password"  # 修改为你自己的密码

echo "➡️ 开始安装 Redis ${REDIS_VERSION}..."

# 1. 安装依赖
echo "📦 安装编译工具和依赖..."
yum groupinstall -y "Development Tools"
yum install -y gcc tcl wget make

# 2. 下载 Redis
echo "🌐 下载 Redis 源码..."
cd /usr/local/src
wget http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz
tar xzf redis-${REDIS_VERSION}.tar.gz
cd redis-${REDIS_VERSION}

# 3. 编译 Redis
echo "🛠️ 编译 Redis..."
make
make install

# 4. 创建配置目录和日志目录
mkdir -p /etc/redis
mkdir -p /var/log/redis

# 5. 拷贝配置文件
cp redis.conf /etc/redis/

# 6. 修改配置文件(使用 sed 自动替换)
echo "📝 配置 Redis..."

sed -i "s/^bind .*/bind 0.0.0.0/" /etc/redis/redis.conf
sed -i "s/^# requirepass.*/requirepass ${REDIS_PASSWORD}/" /etc/redis/redis.conf
sed -i "s/^appendonly no/appendonly yes/" /etc/redis/redis.conf
sed -i "s|^logfile .*|logfile /var/log/redis/redis.log|" /etc/redis/redis.conf
sed -i "s/^# maxmemory <bytes>/maxmemory 256mb/" /etc/redis/redis.conf
sed -i "s/^# maxmemory-policy noeviction/maxmemory-policy allkeys-lru/" /etc/redis/redis.conf
sed -i "s/^protected-mode yes/protected-mode no/" /etc/redis/redis.conf

# 7. 创建 Redis systemd 服务文件
echo "🧾 设置 Redis Systemd 服务..."
cat <<EOF > /etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli -a ${REDIS_PASSWORD} shutdown
Restart=always
User=root

[Install]
WantedBy=multi-user.target
EOF

# 8. 启用并启动 Redis 服务
echo "🚀 启动 Redis..."
systemctl daemon-reexec
systemctl daemon-reload
systemctl enable redis
systemctl start redis

# 9. 测试 Redis 是否启动成功
systemctl status redis --no-pager
echo
echo "✅ Redis ${REDIS_VERSION} 安装完成!"
echo "📌 默认端口:${REDIS_PORT}"
echo "🔐 访问密码:${REDIS_PASSWORD}"
echo "📂 配置文件:/etc/redis/redis.conf"
echo "🧾 日志文件:/var/log/redis/redis.log"
image-20250509231011784
image-20250509231011784