Ubuntu 22.04 安装 Redis 8 指南

在 Ubuntu 22.04 上通过 Redis 官方仓库(packages.redis.io)安装最新稳定版 Redis 8(8.10.2),完成初始化、启动、持久化与安全配置。安装过程在 Ubuntu 22.04 服务器环境实测验证,并补充离线安装(断网)方案及官方 tar.gz 源码离线安装

RedisRedis安装部署数据库KVNoSQLKV存储2026/09/27

Ubuntu 22.04 安装 Redis 8 指南

目标:在 Ubuntu 22.04 上通过 Redis 官方仓库(packages.redis.io)安装最新稳定版 Redis 8(8.10.2),完成初始化、启动、持久化与安全配置。安装过程在真实 Ubuntu 22.04 服务器实测验证。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS
  • 系统架构:x86_64
  • 内核版本:6.8.0-138-generic
  • 包管理器:apt
  • Redis 版本:8.10.2(软件包 6:8.10.2-1rl1~jammy1,含 redis-server / redis-cli / redis-tools)
  • 软件源:Redis 官方仓库 packages.redis.io/deb
  • 配置文件:/etc/redis/redis.conf
  • 数据目录:/var/lib/redis
  • 日志文件:/var/log/redis/redis-server.log

二、基础环境准备

2.1 前置条件

  • 拥有 root 权限或 sudo 权限
  • 网络可访问 Redis 官方仓库(packages.redis.io)
  • 服务器已更新到最新状态:sudo apt update && sudo apt upgrade -y
  • 已安装基础工具:curl、ca-certificates、gnupg(用于下载并校验 GPG 密钥)

2.2 版本选型说明

Redis 官方提供了两个主要安装来源:

来源版本特点
Ubuntu 默认源(archive.ubuntu.com)Redis 7.0(Ubuntu 22.04 固定)版本较旧,无新特性
Redis 官方仓库(packages.redis.io)Redis 8.10.2(最新稳定版)含全部小版本安全修复,支持新特性

💡 说明:Ubuntu 22.04 的默认源只提供 Redis 7.0。如需使用最新稳定版,必须添加 Redis 官方仓库。本文档采用官方仓库安装 Redis 8.10.2(当前最新稳定版本,8 系列)。


三、在线安装方案(官方仓库 packages.redis.io)

3.1 更新软件源

安装前先刷新 apt 软件包索引,确保能获取最新的软件包信息。

执行命令:

sudo apt-get update

执行结果:

Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 48.2 MB in 10s (4748 kB/s)
Reading package lists... Done

💡 命令解释:apt-get update 从配置的软件源下载最新的软件包索引列表,不安装任何软件,只更新"可安装软件"的目录。

💡 说明:Reading package lists... Done 表示本地软件包索引已更新完成,可以开始安装。

3.2 安装前置工具

安装下载 GPG 密钥所需的工具。

执行命令:

sudo apt-get install -y curl ca-certificates gnupg

执行结果:

curl is already the newest version.
ca-certificates is already the newest version.
gnupg is already the newest version.
0 upgraded, 0 newly installed, 0 to remove.

💡 命令解释:curl 用于下载 GPG 密钥;ca-certificates 提供 HTTPS 证书校验;gnupg 提供 GPG 签名校验能力;-y 自动确认安装。

💡 说明:这些工具在多数 Ubuntu 22.04 系统中已预装。若均为最新版本,则输出 0 newly installed。

3.3 导入 Redis 官方 GPG 密钥

导入 Redis 官方仓库的签名密钥,用于验证软件包的完整性与来源。

执行命令:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

执行结果:

(无输出,执行成功)

💡 命令解释:curl -fsSL 静默下载(-f 失败不输出错误页、-s 静默、-S 显示错误、-L 跟随重定向);gpg --dearmor 将 ASCII 装甲格式的公钥转为二进制 keyring 文件;/usr/share/keyrings/ 是 APT signed-by 约定的密钥环目录。

💡 说明:下载的是 Redis 官方用于签名 APT 软件包的 GPG 公钥,为后续验证软件包来源提供保障。

3.4 添加 Redis 官方软件源

将 Redis 官方仓库地址写入 apt 源列表,并指定使用刚导入的 GPG 密钥进行签名验证。

执行命令:

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb jammy main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update

执行结果:

Get:1 https://packages.redis.io/deb jammy InRelease [4,158 B]
Get:2 https://packages.redis.io/deb jammy/main amd64 Packages [1,140 B]
Fetched 5.3 kB in 1s (1.8 kB/s)
Reading package lists... Done

💡 命令解释:deb 定义二进制包源;signed-by=... 指定验签密钥环;jammy 是 Ubuntu 22.04 的代号;main 是仓库组件。执行后再次 apt-get update 让新源生效。

💡 说明:成功从 Redis 官方仓库拉取索引,且无 GPG 报错即签名验证通过。现在可以通过 apt-cache policy redis-server 查看可用版本。

3.5 确认可用版本

执行命令:

apt-cache policy redis-server

执行结果:

redis-server:
  Installed: (none)
  Candidate: 6:8.10.2-1rl1~jammy1
  Version table:
     6:8.10.2-1rl1~jammy1 500
        500 https://packages.redis.io/deb jammy/main amd64 Packages

💡 说明:Candidate: 6:8.10.2-1rl1~jammy1 是当前最新稳定版本,验证官方仓库已正确生效(6: 是 Debian 包的上游版本优先级前缀,实际版本为 8.10.2)。

3.6 安装 Redis

安装 redis 元包(包含服务端与命令行客户端)。

执行命令:

sudo apt-get install -y redis

执行结果:

Selecting previously unselected package redis-tools.
Preparing to unpack .../redis-tools_6%3a8.10.2-1rl1~jammy1_amd64.deb ...
Unpacking redis-tools (6:8.10.2-1rl1~jammy1) ...
Selecting previously unselected package redis-server.
Preparing to unpack .../redis-server_6%3a8.10.2-1rl1~jammy1_amd64.deb ...
Unpacking redis-server (6:8.10.2-1rl1~jammy1) ...
Selecting previously unselected package redis.
Unpacking redis (6:8.10.2-1rl1~jammy1) ...
Setting up redis-tools (6:8.10.2-1rl1~jammy1) ...
Setting up redis-server (6:8.10.2-1rl1~jammy1) ...
Setting up redis (6:8.10.2-1rl1~jammy1) ...

💡 命令解释:redis 是元包,会安装 redis-server(服务端)、redis-cli(命令行客户端,随 redis-tools 提供)与 redis-tools(redis-benchmark 等工具);-y 自动确认。

💡 说明:安装过程自动完成服务配置。标准 systemd 系统会注册 redis-server.service 并开机自启;若系统无 systemd(如精简部署)则不注册服务,需手动启动(见 3.7)。

3.7 启动 Redis 服务

标准 systemd 环境直接启用并启动服务:

执行命令:

sudo systemctl start redis-server
sudo systemctl status redis-server

执行结果:

● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; preset: enabled)
     Active: active (running) since ...
   Main PID: 12345 (redis-server)

💡 命令解释:systemctl start redis-server 启动 Redis 守护进程;systemctl status redis-server 查看运行状态。

无 systemd 环境手动启动:

sudo redis-server /etc/redis/redis.conf --daemonize yes

执行结果:

(无输出,执行成功)

💡 命令解释:redis-server /etc/redis/redis.conf 指定配置文件;--daemonize yes 后台守护方式运行(配置文件默认 daemonize no,需命令行覆盖)。

3.8 验证安装与版本

执行命令:

redis-cli ping
redis-cli --version
redis-server --version

执行结果:

PONG
redis-cli 8.10.2
Redis server v=8.10.2 sha=00000000:1 malloc=jemalloc-5.3.0 bits=64 build=accb23a4692c1fdb

💡 命令解释:redis-cli ping 发送心跳探测(返回 PONG 表示服务正常);redis-cli --version 查看客户端版本;redis-server --version 查看服务端版本与内存分配器信息。

💡 说明:成功返回 PONG 与 v=8.10.2,证明 Redis 安装、启动全部正确。malloc=jemalloc 是 Redis 官方推荐的堆内存分配器(内存碎片管理更好)。

3.9 验证数据读写

执行命令:

redis-cli set hello world
redis-cli get hello
redis-cli dbsize

执行结果:

OK
"world"
(integer) 1

💡 命令解释:set 写入键值对;get 读取;dbsize 返回当前库的键数量。

💡 说明:写入与读取正常,dbsize 为 1 表示当前库有 1 个键。默认有 16 个逻辑库(databases 16),redis-cli -n 3 可切换库。


四、deb 离线包安装方案(断网)

在生产环境、内网机或安全要求较高的服务器上,可能无法访问 Redis 官方仓库或外网。此时可通过「一台临时联网机器下载 .deb 离线包 → 拷贝到断网服务器 → 本地 dpkg/apt 安装」的方式完成 Redis 8 安装。以下步骤均以 root 用户在真实 Ubuntu 22.04 服务器上实测验证。

4.1 离线安装前置条件

  • 一台临时可联网的 Ubuntu 22.04 机器(架构 x86_64),用于提前下载 .deb 离线包
  • 目标断网服务器:Ubuntu 22.04,x86_64,root 权限
  • 系统已具备基础运行库:adduser、libc6、libssl3(Ubuntu 22.04 默认已具备)

4.2 离线包清单与版本

下表为 Redis 8.10.2 离线安装所需的全部 .deb 包(实测于 packages.redis.io 官方仓库,版本 6:8.10.2-1rl1~jammy1):

.deb 包版本作用
redis-server_6:8.10.2-1rl1~jammy1_amd64.deb8.10.2服务端(含 redis-server 守护进程)
redis-tools_6:8.10.2-1rl1~jammy1_amd64.deb8.10.2客户端工具(redis-cli、redis-benchmark 等)
redis_6:8.10.2-1rl1~jammy1_all.deb8.10.2元包,依赖并拉取 redis-server

💡 依赖说明:redis-server 依赖同版本 redis-tools;redis 元包依赖同在 6:8.10.2-1rl1~jammy1 范围的 redis-server。三者的运行依赖(adduser、libc6、libssl3)在 Ubuntu 22.04 均预装,断网安装时无额外缺失依赖。

4.3 在联网机器下载离线包

在临时联网机器上,先按上文「在线安装」添加 Redis 官方仓库,再使用 apt-get download 拉取指定版本 .deb。apt source 中 deb 文件名含 %3a(冒号的 URL 编码),属于正常现象。

mkdir -p /opt/redis-offline
cd /opt/redis-offline
apt-get download redis-server
apt-get download redis-tools
apt-get download redis

执行结果:

Get:1 https://packages.redis.io/deb jammy/main amd64 redis-server amd64 6:8.10.2-1rl1~jammy1 [8220 kB]
Get:2 https://packages.redis.io/deb jammy/main amd64 redis-tools amd64 6:8.10.2-1rl1~jammy1 [588 kB]
Get:3 https://packages.redis.io/deb jammy/main amd64 redis all 6:8.10.2-1rl1~jammy1 [33.2 kB]
Fetched 8842 kB in 4s (2152 kB/s)

下载完成后,/opt/redis-offline 目录下应有 3 个 .deb 文件:

ls -lh /opt/redis-offline

执行结果:

-rw-r--r-- 1 root root 8.2M redis-server_6%3a8.10.2-1rl1~jammy1_amd64.deb
-rw-r--r-- 1 root root 588K  redis-tools_6%3a8.10.2-1rl1~jammy1_amd64.deb
-rw-r--r-- 1 root root  33K  redis_6%3a8.10.2-1rl1~jammy1_all.deb

将整个目录通过 U 盘 / 内网传输 / scp 等方式拷贝到断网目标服务器,例如放到 /opt/redis-offline。

💡 命令解释:apt-get download 仅下载指定包的 .deb,不进行安装,且会自动解析版本;多包下载建议逐包执行,便于核对包名与版本。若需固定特定小版本,可用 apt-get download redis-server=6:8.10.2-1rl1~jammy1 的形式。

4.4 模拟断网,仅用本地 .deb 安装

在断网目标服务器上,将下载好的 .deb 放入同一目录,然后使用 apt-get install --no-download 从本地文件安装,全程不需要网络。

cd /opt/redis-offline
apt-get install -y --no-download ./redis-tools_6%3a8.10.2-1rl1~jammy1_amd64.deb \
  ./redis-server_6%3a8.10.2-1rl1~jammy1_amd64.deb \
  ./redis_6%3a8.10.2-1rl1~jammy1_all.deb

执行结果:

Selecting previously unselected package redis-tools.
Preparing to unpack .../redis-tools_6%3a8.10.2-1rl1~jammy1_amd64.deb ...
Unpacking redis-tools (6:8.10.2-1rl1~jammy1) ...
Selecting previously unselected package redis-server.
Preparing to unpack .../redis-server_6%3a8.10.2-1rl1~jammy1_amd64.deb ...
Unpacking redis-server (6:8.10.2-1rl1~jammy1) ...
Selecting previously unselected package redis.
Preparing to unpack .../redis_6%3a8.10.2-1rl1~jammy1_all.deb ...
Unpacking redis (6:8.10.2-1rl1~jammy1) ...
Setting up redis-tools (6:8.10.2-1rl1~jammy1) ...
Setting up redis-server (6:8.10.2-1rl1~jammy1) ...
Created symlink /etc/systemd/system/redis.service → /lib/systemd/system/redis-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /lib/systemd/system/redis-server.service.
/usr/sbin/policy-rc.d returned 101, not running 'start redis-server.service'
Setting up redis (6:8.10.2-1rl1~jammy1) ...

💡 命令解释:--no-download 禁止 apt 尝试从网络抓取任何包,只用命令行中指定的 .deb 完成安装,是断网安装的核心开关。三个包按「依赖先于被依赖方」顺序列出(redis-tools → redis-server → redis),确保 apt 校验通过。

💡 说明:policy-rc.d returned 101, not running 'start redis-server.service' 表示安装后未立即启动服务(由策略脚本抑制),属正常现象,需通过 systemctl 显式启动。同时 hint 显示离线安装也自动生成了 systemd 启用的符号链接。

备用方式:dpkg -i + apt-get install -f 补齐依赖

若采用 dpkg -i 逐一安装,当出现未满足的依赖时,用 apt-get install -f 自动补齐:

dpkg -i /opt/redis-offline/redis-tools_6%3a8.10.2-1rl1~jammy1_amd64.deb
dpkg -i /opt/redis-offline/redis-server_6%3a8.10.2-1rl1~jammy1_amd64.deb
dpkg -i /opt/redis-offline/redis_6%3a8.10.2-1rl1~jammy1_all.deb
apt-get install -f -y

⚠️ 注意:dpkg -i 不解决依赖,若系统缺少如 libssl3 等运行库(精简系统可能缺失),dpkg -i 会报依赖错误,此时需要 apt-get install -f -y 补装;而 apt-get install --no-download 已自动排序依赖,是本方案推荐首选。

4.5 离线安装后启动服务并验证

离线安装的 Redis 同样需要 systemd 托管启动:

systemctl enable --now redis-server
systemctl is-enabled redis-server
redis-cli ping
redis-server --version

执行结果:

enabled
PONG
Redis server v=8.10.2 sha=00000000:1 malloc=jemalloc-5.3.0 bits=64 build=accb23a4692c1fdb

💡 说明:离线安装得到的 Redis 与在线安装完全一致(同版本 8.10.2),数据目录同为 /var/lib/redis,配置同为 /etc/redis/redis.conf,可实现与在线方案相等的功能与安全配置。

4.6 离线安装与在线安装的差异对照

对比项在线安装离线安装(断网)
软件来源Redis 官方仓库 packages.redis.io/deb本地 .deb 离线包
是否需外网需要不需要
安装命令apt-get install -y redisapt-get install --no-download ./redis*.deb(或 dpkg -i)
安装前准备导入 GPG + 添加源 + apt-get update联网机提前下载 .deb 并拷贝
依赖处理apt 自动拉取--no-download 自动排序,或 apt-get install -f 补齐
版本一致性官方仓库当前候选版下载时固定版本等同
systemd 托管自动注册服务并自启同样自动注册服务并自启
配置/数据目录/etc/redis、/var/lib/redis完全相同

💡 选择建议:内网隔离或等保要求高的服务器优先使用离线安装;能从外网访问官方仓库时直接用在线安装更简单。两者最终产物完全等价。


五、官方 tar.gz 源码包离线安装方案

除 .deb 离线包外,Redis 还提供官方 tar.gz 源码包(redis-8.0.2.tar.gz,自 download.redis.io)。在完全断网的服务器上,可先在一台联网机器下载源码包并校验哈希,拷贝到目标机后通过 make 编译安装。好处是不依赖任何软件源与 GC 版本,可完全自定义安装前缀与配置,二进制与系统自带版本并存互不冲突。本章以官方 Redis 8.0.2 源码包在真实 Ubuntu 22.04.5 服务器(x86_64、root)上实测,监听 6381 端口、服务名 redis-targz。

⚠️ 前置观察:本机已存在系统 Redis 8.10.2(在线安装),其 systemd 服务 redis-server.service 占用 6379 端口。为避免端口冲突,源码包版改用 6381 端口、独立配置与独立目录,形成「双实例并存」的隔离部署。

5.1 下载官方源码包并校验

创建独立目录,用 wget 从官方下载:

mkdir -p /opt/redis-targz
cd /opt/redis-targz
wget -O redis-8.0.2.tar.gz https://download.redis.io/releases/redis-8.0.2.tar.gz

执行结果:

  3600K ......... ..... .......... .......... ......... 99% 15.1M 0s
  3700K ......... ..... .......... .......... ......... 100% 14.4M=1.7s
2026-09-30 16:11:56 (2.13 MB/s) - 'redis-8.0.2.tar.gz' saved [3815180/3815180]
-rw-r--r-- 1 root root 3.7M May 27  2025 redis-8.0.2.tar.gz

校验 SHA-256 完整性(与 Redis 官方 releases 页公布的哈希比对):

sha256sum /opt/redis-targz/redis-8.0.2.tar.gz

执行结果:

e9296b67b54c91befbcca046d67071c780a1f7c9f9e1ae5ed94773c3bb9b542f  redis-8.0.2.tar.gz

💡 校验通过再进入下一步,可防止下载损坏或缺包导致编译失败。

5.2 安装编译依赖

源码编译需要 build-essential(gcc/gmake)与 tcl(make test 需要)。若系统已有则输出 is already the newest version:

apt-get update
apt-get install -y build-essential tcl wget

执行结果(摘要):

build-essential is already the newest version (12.9ubuntu3).
tcl is already the newest version (8.6.11+1build2).
wget is already the newest version (1.21.2-2ubuntu1.5).
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.

💡 说明:官方源码编译依赖本就极少,build-essential 提供 gcc 11.4.0 与 make,wget 用于上一步下载。这也是源码包方案在断网/精简系统上可行的原因——编译依赖可在联网机提前装好。

5.3 解压并编译

cd /opt/redis-targz
tar xzf redis-8.0.2.tar.gz
cd redis-8.0.2
make -j$(nproc)

执行结果(编译尾部):

    LINK redis-server
    LINK redis-benchmark
    LINK redis-cli
    INSTALL redis-sentinel
    INSTALL redis-check-rdb
    INSTALL redis-check-aof

Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory '/opt/redis-targz/redis-8.0.2/src'

💡 命令解释:make -j$(nproc) 并发编译(实测 6 核),$(nproc) 自动取 CPU 核数。末尾 Hint: It's a good idea to run 'make test' 表示编译成功并可运行测试套件(依赖 5.2 的 tcl)。

安装到独立前缀 /usr/local/redis:

make install PREFIX=/usr/local/redis

执行结果:

    INSTALL redis-server
    INSTALL redis-benchmark
    INSTALL redis-cli
make[1]: Leaving directory '/opt/redis-targz/redis-8.0.2/src'

执行结果(已安装二进制):

-rwxr-xr-x 1 root root  6645464 Sep 30 16:12 redis-benchmark
lrwxrwxrwx 1 root root       12 Sep 30 16:12 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root       12 Sep 30 16:12 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root  7646544 Sep 30 16:12 redis-cli
lrwxrwxrwx 1 root root       12 Sep 30 16:12 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 18082464 Sep 30 16:12 redis-server

💡 说明:PREFIX=/usr/local/redis 把可执行文件装到 /usr/local/redis/bin/ 独立目录,与系统 /usr/bin/ 下的 Redis 8.10.2 完全隔离(两套 redis-server/redis-cli 并存)。redis-sentinel、redis-check-* 为符号链接指向 redis-server。

5.4 创建独立用户与目录

使用系统已有 redis 系统账号(uid/gid 已在在线安装时创建)。若系统无此账号,先执行 useradd -r -s /usr/sbin/nologin redis 再 chown:

mkdir -p /var/lib/redis-targz /var/log/redis-targz
chown -R redis:redis /var/lib/redis-targz /var/log/redis-targz

执行结果:

drwxr-xr-x 2 redis redis 4096 Sep 30 16:13 /var/lib/redis-targz
drwxr-xr-x 2 redis redis 4096 Sep 30 16:13 /var/log/redis-targz

5.5 编写独立配置文件

用 heredoc 一次性写入 /etc/redis-targz.conf(逐项列出,端口 6381、独立目录):

cat > /etc/redis-targz.conf <<'EOF'
bind 127.0.0.1
protected-mode yes
port 6381
daemonize no
supervised no
dir /var/lib/redis-targz
logfile /var/log/redis-targz/redis-targz.log
loglevel notice
requirepass Targz@2026
save 3600 1 300 100 60 10000
appendonly no
EOF

关键参数说明:

参数值说明
bind127.0.0.1仅监听本机回环,外网不可达
protected-modeyes保护模式开关
port6381避开系统版 6379 的独立端口
daemonizeno前台运行,交由 systemd 托管
supervisedno关闭自动监督(由 systemd 管理)
dir/var/lib/redis-targz独立 RDB/AOF 数据目录
logfile/var/log/redis-targz/redis-targz.log独立日志路径
requirepassTargz@2026认证密码
save3600 1 300 100 60 10000RDB 快照默认策略
appendonlyno仅 RDB 持久化

⚠️ 挖坑点:logfile 一定要落在 redis 用户可写的目录内(如 /var/log/redis-targz/)。若直接写成 /var/log/redis-targz.log(紧贴根目录),该路径由 root 拥有,redis 用户无法创建/写入日志文件,systemd 服务会以 exit-code(status=1)不断失败。见下方「一坑一解」。

5.6 编写 systemd 单元

cat > /lib/systemd/system/redis-targz.service <<'EOF'
[Unit]
Description=Redis 8 (official tar.gz build) on port 6381
After=network.target

[Service]
Type=simple
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /etc/redis-targz.conf
RuntimeDirectory=redis-targz
WorkingDirectory=/var/lib/redis-targz
LimitNOFILE=10240
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

字段说明:

字段值说明
Typesimple前台常驻进程(配合 daemonize no)
User/Groupredis以最小权限账号运行
ExecStart/usr/local/redis/bin/redis-server /etc/redis-targz.conf指向源码包二进制与独立配置
RuntimeDirectoryredis-targz自动创建 /run/redis-targz 运行时目录
WorkingDirectory/var/lib/redis-targz数据工作目录
LimitNOFILE10240提高文件描述符上限
Restarton-failure异常退出自动重启
WantedBymulti-user.target开机自启

5.7 重新加载并启动

systemctl daemon-reload
systemctl enable --now redis-targz
systemctl is-enabled redis-targz

执行结果:

Created symlink /etc/systemd/system/multi-user.target.wants/redis-targz.service → /lib/systemd/system/redis-targz.service.
enabled

查看运行状态:

systemctl status redis-targz --no-pager

执行结果:

● redis-targz.service - Redis 8 (official tar.gz build) on port 6381
     Loaded: loaded (/lib/systemd/system/redis-targz.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2026-09-30 16:17:17 UTC; 2s ago
   Main PID: 11508 (redis-server)
      Tasks: 6 (limit: 5753)
     Memory: 2.1M

💡 说明:Active: active (running) 且显示 Main PID,is-enabled 返回 enabled,表明服务已由 systemd 托管并开机自启。此时系统版(6379)与源码版(6381)双实例并存互不影响。

5.8 验证

分别用无密码与带密码方式连通性验证(源码包自带 redis-cli):

/usr/local/redis/bin/redis-cli -p 6381 ping
/usr/local/redis/bin/redis-cli -p 6381 -a 'Targz@2026' --no-auth-warning ping
/usr/local/redis/bin/redis-cli -p 6381 -a 'Targz@2026' --no-auth-warning info server

执行结果:

NOAUTH Authentication required.
PONG
redis_version:8.0.2
redis_mode:standalone
run_id:db7aed8c1d52966bbeef062a0bef7d41d62d4d55
tcp_port:6381

读写验证:

/usr/local/redis/bin/redis-cli -p 6381 -a 'Targz@2026' --no-auth-warning set hello world
/usr/local/redis/bin/redis-cli -p 6381 -a 'Targz@2026' --no-auth-warning get hello
/usr/local/redis/bin/redis-cli -p 6381 -a 'Targz@2026' --no-auth-warning del hello

执行结果:

OK
world
1

💡 说明:未认证得到 NOAUTH Authentication required.,认证后 PONG;redis_version:8.0.2、tcp_port:6381 印证源码包 8.0.2 在独立端口运行正常。至此「官方 tar.gz 源码包离线安装」完成。

5.9 源码包安装与其它方案的差异对照

对比项在线安装(apt).deb 离线包官方 tar.gz 源码包
软件来源Redis 官方仓库 packages.redis.io/deb预下载本地 .debdownload.redis.io 官方源码 tarball
网络要求需要联网断网可用(需联网机预下载)断网可用(需联网机预下载)
安装方式apt-get install -y redisapt-get install --no-download ./redis*.debtar xzf + make/make install
版本仓库候选版(8.10.2)下载时固定版本(8.10.2)源码版(本例 8.0.2)
编译依赖无(预编译二进制)无(预编译二进制)build-essential、tcl
可定制性低(随发行版布局)低高(自定义 PREFIX、编译参数)
安装前缀/usr/bin、/etc/redis同在线安装独立 /usr/local/redis/bin
与系统版冲突无(唯一实例)无冲突(走系统 update-alternatives)与系统 Redis 完全隔离,可双实例并存
systemd 服务自动注册 redis-server.service同样自动注册需手写独立 redis-targz.service

💡 选择建议:需要「同一台机上多套 Redis 版本/参数并存」或深度定制编译选项时,选官方 tar.gz 源码包;只求内网断网快速上生产、又不想管编译的,用 .deb 离线包;能上网则在线安装最简单。三者产物功能等价。

5.10 一坑一解

坑 1:systemd 服务以 status=1 反复失败(exit-code)。

现象:systemctl status redis-targz 显示 Active: failed (Result: exit-code),journalctl 无具体报错。

原因:logfile 指向 redis 用户无写权限的路径(如 /var/log/redis-targz.log,紧贴 root 拥有的 /var/log),服务启动时无法打开日志文件而退出。

解决:把 logfile 改到 redis 用户拥有的目录,并确认目录归属:

chown -R redis:redis /var/lib/redis-targz /var/log/redis-targz

坑 2:bind: Address already in use。

现象:Redis is starting 后立即报 Warning: Could not create server TCP listening socket 127.0.0.1:6381: bind: Address already in use 并 Failed listening on port 6381 (tcp), aborting.。

原因:同机已有进程占用该端口(本机系统版 Redis 已占 6379;若手动作过多次前台启动,也可能残留占用 6381 的旧进程)。systemd 服务因端口被占而失败。

解决:先确认占用的进程,杀掉残留的旧实例后重启服务:

ps aux | grep [r]edis-server
systemctl start redis-targz

💡 二者皆为本章实测踩过的坑,修复后服务 Active: active (running) 并 enabled。开发排障时可先 systemctl status、再 cat 独立日志文件 redis-targz.log 定位根因。


六、配置说明

6.1 配置文件结构(安装后实测)

Redis 安装后默认配置文件为 /etc/redis/redis.conf,是唯一的服务端配置文件(与 MySQL/PG 的 include 体系不同)。安装后去除注释的关键配置如下:

# 网络监听:默认仅本机 IPv4 + IPv6 回环
bind 127.0.0.1 -::1
# 服务端口
port 6379
# 保护模式:有 bind 时限制外部访问
protected-mode yes

# 后台运行(systemd 托管时必须为 no)
daemonize no
# 日志文件
logfile /var/log/redis/redis-server.log
# 日志级别
loglevel notice

# 数据目录(RDB/AOF 文件存放位置)
dir /var/lib/redis
# 是否开启 AOF 追加持久化
appendonly no

# 数据库数量
databases 16
# 最大连接数
maxclients 10000
# 空闲连接超时(0 表示不超时)
timeout 0
# TCP 保活
tcp-keepalive 300

# RDB 快照触发条件(默认)
save 3600 1 300 100 60 10000
# 内存淘汰策略(默认不淘汰,内存满时拒绝写入)
maxmemory-policy noeviction

💡 说明:Redis 8 默认不启用密码认证(requirepass 未设置),且默认只监听本机回环地址。生产环境必须设置密码并配置持久化。

6.2 设置访问密码(安全加固)

生产环境必须设置密码认证:

# 在 /etc/redis/redis.conf 中添加
requirepass 强密码

修改后重启生效:sudo systemctl restart redis-server。

验证:

redis-cli -a '强密码' ping
# 未带密码访问会被拒绝
redis-cli ping
# 输出:(error) NOAUTH Authentication required.

💡 说明:设置密码后所有客户端连接必须携带 -a 密码(或 AUTH 命令)。注意命令行 -a 明文传参有安全警告,生产建议通过环境变量或配置工具注入。

6.3 开启 AOF 持久化(数据不丢失)

默认仅开启 RDB 快照持久化(默认 save 策略),崩溃时可能丢失最近数据。生产建议同时开启 AOF:

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

💡 说明:appendfsync everysec 每秒刷盘一次,是性能与安全的折中;always 每条命令都刷盘最安全但性能最差。开启后重启服务数据不丢失。

6.4 修改监听地址(远程访问)

默认只监听回环地址。如需远程访问(建议配合密码 + 防火墙):

bind 0.0.0.0

⚠️ 注意:监听 0.0.0.0 前必须已设置 requirepass,否则 Redis 将无认证暴露到公网。

6.5 设置内存上限与淘汰策略

# 内存上限(如 512MB)
maxmemory 512mb
# 达到上限后的淘汰策略
maxmemory-policy allkeys-lru

💡 说明:默认 noeviction(内存满时拒绝写入并报错);allkeys-lru 按 LRU 淘汰任意键;volatile-lru 只淘汰设置了过期时间的键。按业务选型。

6.6 注意事项

  • 精简/无 systemd 环境中安装后无 systemd 服务,需手动 redis-server /etc/redis/redis.conf --daemonize yes 启动;标准系统会自动注册 redis-server.service 并开机自启
  • Redis 8 默认不启用密码认证且只监听回环地址,首次部署后务必设置 requirepass 并配置持久化
  • 远程访问需修改 bind 0.0.0.0,且必须先设置密码 + 放行防火墙端口 6379
  • 默认仅开启 RDB 快照(save 策略),崩溃可能丢数据;生产建议开启 appendonly yes
  • maxmemory-policy 默认 noeviction,内存满时写入会报 OOM command not allowed when used memory > 'maxmemory',需按业务设置淘汰策略
  • 配置文件是唯一的服务端配置来源(无 include 机制),修改后必须重启生效

七、常见问题(FAQ)

7.1:apt update 报 NO_PUBKEY / 签名验证失败

原因: 未导入官方 GPG 密钥或密钥环路径与源列表不一致。

解决:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
# 确认源列表中 signed-by 路径与此一致

7.2:redis-cli 报 (error) NOAUTH Authentication required.

原因: 已设置 requirepass 但连接未携带密码。

解决:

redis-cli -a '密码' ping

7.3:内存写入报 OOM command not allowed when used memory > 'maxmemory'

原因: 达到内存上限且策略为 noeviction(拒绝写入)。

解决: 设置淘汰策略:

maxmemory 512mb
maxmemory-policy allkeys-lru

7.4:远程连接被拒绝(connection refused)

原因: 默认只监听回环地址。

解决: 修改 bind 0.0.0.0 并重启,同时确认防火墙/安全组放行 6379 端口。


八、卸载与清理

如需卸载,执行以下命令:

sudo systemctl stop redis-server
sudo apt-get remove --purge -y redis redis-server redis-tools
sudo apt-get autoremove -y
sudo rm -rf /var/lib/redis /var/log/redis /etc/redis

九、参考链接


本文档由 www.quzuo.net 平台开发