Redis 下载安装完全攻略:一步步教你轻松搞定
前言
在当今高速发展的信息技术领域,数据处理和缓存的重要性日益凸显。Redis 作为一款高性能的键值对数据库,以其出色的速度、丰富的数据结构和灵活的应用场景,成为了众多开发者和企业构建高并发、低延迟应用的首选工具。无论是作为缓存、消息队列、还是排行榜等,Redis 都能发挥关键作用。
既然 Redis 如此强大,那么如何才能将其请入你的开发环境或服务器呢?本文将为你提供一份详尽的 Redis 下载与安装攻略,一步一步指导你完成整个过程,即使是初次接触 Redis 的新手,也能轻松上手。
本文将重点介绍在 Linux 环境下从源码编译安装 Redis 的方法,因为这通常是最灵活、最能体验 Redis 官方最新特性且适用于生产环境的方式。同时,我们也会简要介绍其他平台的安装方法和通过包管理器安装的便捷方式。
第一章:了解 Redis 与准备工作
1.1 什么是 Redis?
在开始安装之前,先简单了解一下 Redis。Redis (Remote Dictionary Server) 是一个开源的、使用 C 语言编写的、支持网络、可基于内存或持久化的键值对存储系统。它不仅仅是一个简单的 key-value 存储,还提供了丰富的数据结构,如字符串 (strings)、列表 (lists)、集合 (sets)、有序集合 (sorted sets)、哈希表 (hashes) 等。
Redis 的主要特点包括:
- 极高的性能: 数据主要存储在内存中,读写速度非常快。
- 丰富的数据结构: 支持多种数据结构,满足不同应用需求。
- 持久化: 支持 RDB(快照)和 AOF(只追加文件)两种持久化方式,保证数据安全。
- 主从复制: 支持 master-slave 模式,实现高可用和读写分离。
- 集群: 支持分布式集群,处理海量数据和请求。
- 原子性: Redis 的所有操作都是原子性的。
- 发布/订阅: 支持 Pub/Sub 模式,实现消息通信。
1.2 为什么选择从源码编译安装?
尽管通过包管理器(如 apt
、yum
、brew
)安装 Redis 非常便捷,但从源码编译安装有其独特的优势:
- 最新版本: 可以安装官方发布的最新稳定版本,第一时间体验新特性和 bug 修复。
- 定制化: 可以根据需要调整编译选项,进行更深度的定制(虽然通常默认选项就足够)。
- 环境独立: 安装到指定目录,不依赖系统包管理器的版本,避免潜在冲突。
- 了解构建过程: 深入理解软件的构建和安装流程。
对于生产环境,通常推荐从源码编译安装,以便更好地控制版本和配置。
1.3 准备工作
在开始安装之前,请确保你具备以下条件:
- 一台运行 Linux 操作系统的计算机或虚拟机(本文以 Ubuntu/Debian 或 CentOS/RHEL 为例)。
- 稳定的互联网连接,用于下载 Redis 源码包。
- 具备
sudo
或root
权限,以便进行系统级别的安装操作。 - 熟悉基本的 Linux 命令行操作。
- 安装了编译 Redis 所需的基础工具链,主要包括:
gcc
或clang
(C 语言编译器)make
(构建工具)tcl
(用于运行 Redis 的自动化测试,可选但推荐安装)
如果你的系统尚未安装这些工具,可以通过以下命令安装:
-
对于 Debian/Ubuntu 系列:
bash
sudo apt update
sudo apt install build-essential tcl
build-essential
包包含了gcc
、make
等常用的编译工具。 -
对于 CentOS/RHEL 系列:
bash
sudo yum update
sudo yum groupinstall "Development Tools"
sudo yum install tcl
或者对于较新的系统使用dnf
:
bash
sudo dnf update
sudo dnf groupinstall "Development Tools"
sudo dnf install tcl
“Development Tools” 包含了gcc
、make
等。
第二章:从源码编译安装 Redis (Linux)
这是本文的重点部分,我们将一步步详细指导你完成从下载到安装 Redis 的整个过程。
2.1 步骤 1:连接到服务器或打开终端
如果你是在远程服务器上安装,使用 SSH 客户端连接到服务器。如果是在本地虚拟机或开发机上安装,直接打开终端应用程序。
bash
ssh your_username@your_server_ip
(如果你是在本地安装,跳过此步骤)
2.2 步骤 2:下载 Redis 源码包
访问 Redis 官方网站 (https://redis.io/download) 获取最新稳定版本的下载链接。你可以在页面上找到 “Stable” 版本的下载地址。
使用 wget
或 curl
命令在终端中下载源码包。例如,如果最新稳定版本是 7.2.4,链接可能是这样(请根据官网实际链接替换):
“`bash
进入一个合适的目录,比如用户的主目录或 /opt 目录
cd ~
下载源码包
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
``
https://download.redis.io/releases/redis-7.2.4.tar.gz` 为你从官网获取到的当前最新稳定版本的下载链接。
请务必替换
下载完成后,你可以使用 ls
命令查看当前目录,确认压缩包已成功下载。
“`bash
ls
应该能看到 redis-7.2.4.tar.gz 文件
“`
2.3 步骤 3:解压源码包
下载的源码包是 tar.gz
格式的压缩文件,需要进行解压。
“`bash
使用 tar 命令解压
tar -xzf redis-7.2.4.tar.gz
``
tar命令的选项解释:
-x
*: 解压 (extract)
-z
*: 使用 gzip 解压 (适用于 .gz 文件)
-f`: 指定要处理的文件 (file)
*
解压成功后,会生成一个与压缩包同名的目录(不含 .tar.gz
后缀),例如 redis-7.2.4
。
“`bash
ls
现在应该能看到 redis-7.2.4 目录和 redis-7.2.4.tar.gz 文件
“`
2.4 步骤 4:进入源码目录并编译 Redis
进入解压后的 Redis 源码目录:
bash
cd redis-7.2.4
现在,执行 make
命令开始编译 Redis。make
命令会读取源码目录中的 Makefile
文件,并根据其中的指示完成编译过程。
“`bash
编译 Redis
make
“`
这个过程可能需要几分钟,取决于你的服务器性能。make
命令会编译 Redis 服务器 (redis-server
)、客户端 (redis-cli
) 以及一些其他实用工具。编译过程中会输出大量的编译信息,如果最后没有报错,出现类似 “Hint: To test …” 的字样,说明编译成功。
(可选但推荐)运行测试套件:
Redis 提供了一个测试套件,用于验证编译后的程序是否正常工作。运行测试需要 Tcl 环境,如果之前安装了 Tcl,可以在编译成功后运行:
“`bash
运行测试
make test
``
\o/ All tests passed without errors!` 的信息),则表明 Redis 编译非常健康。如果测试失败,可能说明编译环境有问题或者下载的源码包不完整/损坏。
测试过程也需要一些时间。如果所有测试都通过(输出类似
2.5 步骤 5:安装 Redis
编译成功后,就可以进行安装了。make install
命令会将编译生成的可执行文件(如 redis-server
和 redis-cli
)复制到系统的可执行文件路径下,通常是 /usr/local/bin
。
“`bash
安装 Redis 可执行文件
sudo make install
``
sudo
注意:这一步通常需要权限,因为
/usr/local/bin` 目录属于系统,普通用户没有写入权限。
执行 sudo make install
后,你会看到类似以下输出,表明文件被复制到了指定位置:
cd src && make install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
现在,你可以通过在任何位置直接输入命令来运行 redis-server
和 redis-cli
了,因为它们已经被添加到系统的 PATH 环境变量所包含的目录中。
“`bash
验证安装是否成功,检查 redis-server 和 redis-cli 是否可用
redis-server –version
redis-cli –version
“`
如果能正确显示版本信息,说明核心组件已经安装成功。
2.6 步骤 6:配置 Redis (重要!)
仅仅安装可执行文件是不够的,为了让 Redis 更可靠、更易管理,特别是用于生产环境,我们需要进行一些必要的配置,并将其设置为一个系统服务。
Redis 源码包中包含一个非常重要的配置文件模板:redis.conf
。这个文件位于源码目录的根目录下。我们需要将它复制到系统的一个常用配置目录下,并进行修改。
建议的配置步骤:
-
创建配置目录: 在
/etc
目录下创建一个redis
目录,用于存放 Redis 的配置文件。
bash
sudo mkdir /etc/redis -
复制配置文件: 将源码目录中的
redis.conf
文件复制到刚刚创建的配置目录中。
bash
# 确保当前在 redis 源码目录中 (例如 redis-7.2.4)
sudo cp redis.conf /etc/redis/ -
创建数据和日志目录: Redis 需要一个地方存储数据文件(如 RDB 快照、AOF 文件)和日志文件。建议在
/var/lib/redis
创建数据目录,在/var/log/redis
创建日志目录。
bash
sudo mkdir /var/lib/redis
sudo mkdir /var/log/redis
然后,通常建议将这些目录的所有权赋予一个专门的redis
用户,并限制权限。如果你的系统没有redis
用户,可以创建一个:
bash
sudo adduser --system --no-create-home redis
# 或对于某些系统可能是:
# sudo useradd -r -s /bin/false redis
# 根据你的Linux发行版创建系统用户的方式可能略有不同
然后修改目录权限:
bash
sudo chown redis:redis /var/lib/redis
sudo chown redis:redis /var/log/redis
# 如果需要,可以进一步限制权限,例如只有 redis 用户有读写权限
# sudo chmod 700 /var/lib/redis
# sudo chmod 700 /var/log/redis -
修改
redis.conf
文件: 使用文本编辑器打开/etc/redis/redis.conf
文件进行编辑。
bash
sudo nano /etc/redis/redis.conf
# 或者使用 vim
# sudo vim /etc/redis/redis.conf
需要修改的关键配置项:daemonize yes
: 将no
改为yes
,让 Redis 以后台守护进程方式运行。pidfile /var/run/redis/redis_6379.pid
: 设置 PID 文件路径,确保 Redis 运行时会创建该文件,方便进程管理。你可能需要创建/var/run/redis
目录并赋予 redis 用户权限。更简单的方式是使用/var/run/redis_6379.pid
,或者根据你的系统服务配置方式来决定 PID 文件的位置。对于 systemd,通常不需要手动指定 pidfile,systemd 会跟踪进程。建议: 如果使用 systemd 服务,可以忽略pidfile
配置,或者将其注释掉,让 systemd 自己管理。port 6379
: Redis 默认端口,可以根据需要修改。logfile "/var/log/redis/redis.log"
: 指定日志文件路径,确保 Redis 运行时会将日志输出到这个文件,方便查看运行状态和错误信息。请确保/var/log/redis
目录存在且redis
用户有写入权限。dir /var/lib/redis
: 指定 RDB 持久化文件和 AOF 文件存放的目录。请确保/var/lib/redis
目录存在且redis
用户有写入权限。bind 127.0.0.1
: 默认只允许本地连接。如果你希望其他机器也能连接 Redis,需要修改这个选项,例如bind 0.0.0.0
(绑定所有网络接口,请注意安全性,通常需要配合防火墙和密码访问)。在学习或开发环境可以绑定0.0.0.0
,但在生产环境强烈建议仅绑定内网 IP 或使用防火墙限制访问源。protected-mode yes
: 启用保护模式。当bind
不是127.0.0.1
且没有设置密码时,保护模式会阻止外部连接。如果设置了bind 0.0.0.0
且没有设置密码,务必将此项改为no
(极不安全),或者设置密码并保持为yes
。强烈建议保持protected-mode yes
或设置密码 (requirepass
) 并配置防火墙。requirepass your_password
: 设置连接密码。在生产环境中强烈建议设置一个强密码,增加安全性。设置密码后,客户端连接时需要使用AUTH your_password
命令进行认证。
修改完成后,保存并关闭文件。
2.7 步骤 步骤 7:设置 Redis 为系统服务 (使用 systemd)
将 Redis 设置为系统服务(daemon)非常重要,这样可以方便地使用 systemctl
命令来启动、停止、重启 Redis,并让它在系统启动时自动运行。现代 Linux 发行版大多使用 systemd 作为服务管理器。
-
创建 systemd Unit 文件: 在
/etc/systemd/system/
目录下创建一个名为redis.service
的文件。
bash
sudo nano /etc/systemd/system/redis.service -
编辑 Unit 文件内容: 将以下内容粘贴到
redis.service
文件中。请根据你的实际安装路径和配置路径进行调整。
“`ini
[Unit]
Description=Redis In-Memory Data Structure Store
After=network.target[Service]
User=redis # 以 redis 用户运行,确保目录权限正确
Group=redis # 以 redis 组运行
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf # Redis 服务的启动命令
ExecStop=/usr/local/bin/redis-cli shutdown # Redis 服务的停止命令如果你不使用 PID 文件,或者 systemd 无法正确跟踪,可以尝试设置 Type=forking
Type=forking
PIDFile=/var/run/redis_6379.pid # 如果配置了pidfile且需要systemd跟踪,打开此项
Restart=always # 无论何种情况都尝试重启服务
RestartSec=5 # 重启前等待 5 秒[Install]
WantedBy=multi-user.target
``
ExecStart
请确保中的
/usr/local/bin/redis-server和
/etc/redis/redis.conf路径正确。
User和
Group建议设置为前面创建的
redis` 用户和组。 -
重新加载 systemd 配置: 通知 systemd 有新的服务文件。
bash
sudo systemctl daemon-reload -
启用 Redis 服务: 设置 Redis 服务在系统启动时自动启动。
bash
sudo systemctl enable redis.service
这会在/etc/systemd/system/multi-user.target.wants/
目录下创建一个指向redis.service
文件的软链接。
2.8 步骤 8:启动 Redis 服务
现在可以启动 Redis 服务了:
bash
sudo systemctl start redis.service
2.9 步骤 9:验证 Redis 是否正在运行
使用以下命令检查 Redis 服务的状态:
bash
sudo systemctl status redis.service
如果一切正常,你应该会看到服务状态显示为 active (running)
,并且有最近的日志输出。
你也可以使用 redis-cli
客户端连接到 Redis 服务器进行验证。
“`bash
连接到本地运行的 Redis 默认端口
redis-cli
``
redis.conf
如果中设置了密码 (
requirepass`),连接后需要进行认证才能执行命令:
“`bash
连接后输入认证命令
AUTH your_password
或者连接时直接认证
redis-cli -a your_password
“`
连接成功后,可以尝试一些简单的 Redis 命令:
“`bash
发送一个 PING 命令
PING
应该返回 PONG
设置一个键值对
SET mykey “Hello, Redis!”
应该返回 OK
获取键的值
GET mykey
应该返回 “Hello, Redis!”
查看 Redis 信息
INFO
会返回 Redis 的详细信息,包括版本、运行状态、内存使用等
退出 redis-cli
QUIT
“`
如果以上命令都能正常执行,恭喜你!你已经成功地从源码编译并安装了 Redis,并将其配置为系统服务。
2.10 停止、重启 Redis 服务
使用 systemd 命令可以方便地管理 Redis 服务:
“`bash
停止 Redis 服务
sudo systemctl stop redis.service
重启 Redis 服务
sudo systemctl restart redis.service
“`
第三章:其他安装方法简述
3.1 使用包管理器安装
对于非生产环境或只是快速体验 Redis,使用系统的包管理器安装是最快捷的方式。
-
在 Debian/Ubuntu 上使用 APT:
bash
sudo apt update
sudo apt install redis-server
安装完成后,Redis 通常会自动启动并设置为开机启动服务。配置文件通常在/etc/redis/redis.conf
。 -
在 CentOS/RHEL 上使用 YUM/DNF:
“`bash
# 使用 YUM (较旧系统)
sudo yum install redis使用 DNF (较新系统)
sudo dnf install redis
安装完成后,可能需要手动启动并启用服务:
bash
sudo systemctl start redis
sudo systemctl enable redis
``
/etc/redis.conf
配置文件通常在或
/etc/redis/redis.conf`。 -
在 macOS 上使用 Homebrew:
bash
brew install redis
安装完成后,Homebrew 会提示你如何启动 Redis,通常是使用brew services start redis
。
优点: 安装简单快捷,依赖关系自动处理,易于更新。
缺点: 安装的 Redis 版本可能不是最新的,配置可能与官方默认配置略有差异。
3.2 在 Windows 上安装
Redis 官方不直接支持在 Windows 上构建和运行。官方推荐的方式是使用 Windows Subsystem for Linux (WSL2) 来运行 Linux 环境下的 Redis。
-
推荐方式:使用 WSL2
在 Windows 10/11 上启用 WSL2,然后在 WSL 中安装一个 Linux 发行版(如 Ubuntu),按照本文第二章的 Linux 安装方法进行编译或使用包管理器安装 Redis。这是在 Windows 上运行 Redis 最接近生产环境且官方推荐的方式。 -
非官方 Native Port
Microsoft 曾经提供过一个非官方的 Redis Windows Native Port 项目,但该项目已经停止更新。现在有一些社区维护的 Windows 端口,但通常不推荐用于生产环境,只适用于开发或测试目的。如果你确实需要在 Windows 原生环境运行,可以在 GitHub 上搜索 “Redis Windows” 找到这些非官方项目,但请自行评估风险。
第四章:安装后的重要配置与安全加固
安装并启动 Redis 只是第一步,为了让 Redis 更安全、更稳定地运行,特别是对于对外提供服务的场景,还需要进行一些重要的配置和安全加固。
- 修改默认端口 (6379): 虽然不是强制要求,但修改默认端口可以减少被端口扫描工具发现的几率。
- 绑定 IP 地址 (
bind
): 生产环境务必不要绑定0.0.0.0
,除非你有非常严格的防火墙规则。应只绑定服务所在的内网 IP 地址。如果只允许本机访问,保持bind 127.0.0.1
。 - 设置访问密码 (
requirepass
): 这是最基本的安全措施,为 Redis 设置一个强密码。客户端连接后必须先通过AUTH password
命令认证。 - 启用保护模式 (
protected-mode yes
): 当未设置密码或绑定地址为非本地地址时,保护模式会阻止外部连接。保持启用状态可以防止未授权访问。 - 配置持久化 (
save
,appendonly
): 根据你的数据重要性,配置 RDB 快照和/或 AOF 日志来保证数据不丢失。 - 配置内存限制 (
maxmemory
): 设置 Redis 可以使用的最大内存,避免因内存耗尽导致系统不稳定。当达到内存限制时,可以通过配置不同的淘汰策略 (maxmemory-policy
) 来处理。 - 配置日志 (
logfile
,loglevel
): 将日志输出到文件,并设置合适的日志级别,方便监控和排查问题。 - 防火墙设置: 在服务器的防火墙(如
ufw
,firewalld
)中,只允许可信的 IP 地址或 IP 段访问 Redis 的监听端口。 - 重命名危险命令 (
rename-command
): 可以考虑重命名或禁用一些高危命令,如FLUSHALL
、FLUSHDB
、KEYS
、SHUTDOWN
等,增加安全性。 - 使用非 root 用户运行: 前面我们已经通过 systemd 配置让 Redis 以
redis
用户运行,这是重要的安全实践,避免使用 root 权限运行服务。
所有这些配置都可以在 /etc/redis/redis.conf
文件中进行修改,修改后需要重启 Redis 服务才能生效。
第五章:常见问题与故障排除
在安装或运行 Redis 过程中,可能会遇到一些问题。以下是一些常见的问题及其可能的解决方案:
-
make
失败:- 问题: 提示找不到
gcc
或make
命令,或者编译错误。 - 原因: 编译工具链未安装。
- 解决方案: 确保已安装
build-essential
(Debian/Ubuntu) 或 “Development Tools” (CentOS/RHEL) 以及 Tcl。
- 问题: 提示找不到
-
sudo make install
权限不足:- 问题: 执行
make install
时提示权限错误。 - 原因: 没有足够的权限写入安装目录(通常是
/usr/local/bin
)。 - 解决方案: 确保使用了
sudo
命令执行安装。
- 问题: 执行
-
Redis 服务启动失败 (
systemctl status redis.service
显示失败):- 问题: 无法启动 Redis 服务。
- 原因: 可能原因有很多,如配置文件错误、端口被占用、文件权限问题、SELinux 限制等。
- 解决方案:
- 查看日志:检查
/var/log/redis/redis.log
文件(如果你按本文配置了日志路径)或 systemd 日志 (journalctl -u redis.service -xe
) 获取详细错误信息。 - 检查配置文件:使用
redis-server --test-check-config /etc/redis/redis.conf
命令检查配置文件的语法错误。 - 检查端口占用:使用
sudo netstat -tulnp | grep 6379
(或你的Redis端口) 查看是否有其他进程占用了 Redis 端口。 - 检查文件/目录权限:确保 Redis 运行用户 (
redis
) 对配置文件、数据目录、日志目录有读写权限。 - 检查 SELinux:如果你的系统启用了 SELinux,可能会阻止 Redis 访问某些目录或端口。可以暂时将 SELinux 设置为 Permissive 模式 (
sudo setenforce 0
) 测试是否是 SELinux 导致的问题,如果是,需要配置相应的 SELinux 策略。 - 检查 systemd Unit 文件:确保
ExecStart
等路径正确,且文件没有语法错误。重新加载 systemd 配置 (sudo systemctl daemon-reload
) 后再尝试启动。
- 查看日志:检查
-
redis-cli
连接不上 Redis:- 问题: 客户端无法连接到 Redis 服务器。
- 原因: Redis 服务未运行、防火墙阻止连接、Redis 绑定了错误的 IP 地址、客户端连接的 IP/端口不正确、需要密码但未认证等。
- 解决方案:
- 确认 Redis 服务正在运行 (
sudo systemctl status redis.service
)。 - 确认 Redis 绑定的 IP 地址 (
bind
配置项) 是否允许客户端连接的来源 IP。 - 检查服务器防火墙是否开放了 Redis 端口 (默认为 6379)。
- 确认
redis-cli
连接时使用了正确的 IP 地址和端口 (redis-cli -h <host> -p <port>
)。 - 如果设置了密码,连接后或连接时使用
AUTH password
或redis-cli -a password
进行认证。
- 确认 Redis 服务正在运行 (
总结
通过本文的详细攻略,你应该已经掌握了在 Linux 环境下从源码编译安装 Redis 的方法,并了解了如何将其配置为系统服务、进行基本的安全加固。同时,我们也简要介绍了通过包管理器在不同平台安装 Redis 的便捷方式。
从源码安装虽然步骤略多,但能让你更深入地了解 Redis 的构建过程,并且能够安装最新版本的 Redis,这对于希望充分利用 Redis 新特性和优化性能的场景非常重要。
成功安装 Redis 只是第一步,接下来你可以开始学习 Redis 的各种数据结构、命令和高级特性(如事务、脚本、管道、发布/订阅、集群等),并将其应用到你的项目中,享受 Redis 带来的高性能数据处理体验。
希望这篇攻略对你有所帮助!如果在安装过程中遇到任何问题,可以查阅 Redis 官方文档或在相关的技术社区寻求帮助。祝你使用 Redis 愉快!