目录
[一、切换到 root 超级用户](#一、切换到 root 超级用户)
[二、搜索 Redis 相关的软件安装包](#二、搜索 Redis 相关的软件安装包)
[三、使用 apt 命令安装 Redis](#三、使用 apt 命令安装 Redis)
[四、检查 Redis 安装情况](#四、检查 Redis 安装情况)
[1、修改绑定地址 bind 0.0.0.0](#1、修改绑定地址 bind 0.0.0.0)
[2、关闭保护模式 protected-mode no](#2、关闭保护模式 protected-mode no)
一、切换到 root 超级用户
使用su命令切换到root超级用户:
bash
su

此时我们已经切换到了root超级用户,但是工作目录还是在hmz用户的家目录中,即/home/hmz,此时我们必须要cd到root的家目录中进行工作,如下:
bash
cd ~

二、搜索 Redis 相关的软件安装包
安装前,我们先了解安装的版本,可能以后会需要用到,比如更新版本之类的,方便记录和认识。我们首先搜索Redis相关的软件安装包:
bash
apt search redis

上面红色方框的这个版本是功能比较全的,也是apt当前提供的稳定版本,即Redis 5.0.7版本,方框下面符合版本条件的都是这个版本所需的软件安装包(包括很多的文件,并不是只有这个,我们这里并不关心这些,只需知道所选版本就行),其中包括Redis的客户端和服务端等等一系列文件和包;若我们想安装7.0这个新的版本的话,就没办法通过apt这个软件安装包管理器来安装了,apt也不提供Redis最新版本的安装,这样会比较麻烦,没有必要,还是选择5.0.7版本就好了。
补充和扩展: 关于上面的问题版本的选择和安装的问题,它触及了Linux发行版软件包管理的一个核心设计哲学:稳定性优先 vs. 追求最新。
核心原因:Ubuntu 的软件仓库策略
Ubuntu(以及绝大多数主流Linux发行版,如Debian、CentOS)的官方软件仓库(Repository)的首要目标是为系统提供一个稳定、可靠且兼容性经过充分测试的软件环境,而不是提供所有软件的最新版本。
冻结和测试
-
当一个Ubuntu版本(例如20.04 LTS)发布时,其官方软件仓库中的大部分软件版本就会被"冻结"在一个特定的状态。
-
在此之后,Ubuntu团队和安全团队只会为这些软件向后移植(Backport)安全补丁和关键的错误修复 ,而不会升级到新的主版本或次版本。
-
这样做是为了确保系统核心组件的API、配置文件和行为保持一致。如果随意升级,可能会引发依赖关系冲突,导致其他依赖于Redis的软件(如PHP扩展、Python库等)崩溃。
软件包命名规则:redis-server
vs redis
-
截图中红色方框下面的软件包名为
redis-server
。这是Ubuntu官方打包并维护的Redis服务器软件包。 -
它后面标注的
(如5.0.7-2build1)
是Ubuntu在Redis官方5.0.7源码基础上,打上了一些自己的构建和兼容性补丁后的版本号。 -
它被标记为
all
是因为这个软件包是架构无关的,它包含的是配置文件和脚本,实际的二进制文件会在安装时根据你的系统架构(amd64, arm64等)从另一个依赖包中获取。
为什么新版本(如7.0)不在apt里?
-
Redis 7.0 是在使用的这个Ubuntu版本发布之后才问世的。根据上述的"稳定性优先"原则,Ubuntu官方仓库不会将其纳入常规更新。
-
将一个新的大版本软件(如从5.0到7.0)加入到已发布的稳定版系统中,需要进行大量的测试工作,以确保它与系统中成千上万个其他软件包都能和平共处。这对于发行版维护者来说是一个巨大的工程,他们通常只对少数核心组件(如浏览器、内核)提供这样的更新通道。
-
**如何安装新版本的Redis(如果确实需要)?**有需要的同学可以上网查找资料,这里学习Redis使用5.0.7版本就完全足够了。安装7.0比较麻烦,没有必要,对于学习和测试环境来说,这是正确的。对于生产环境,使用经过充分测试的5.0.7通常是更稳妥的选择。
三、使用 apt 命令安装 Redis
bash
#安装时询问
apt install redis
#或者
#安装时不询问,直接安装
apt install redis -y

输入y之后,等待Redis的安装(其中包括客户端和服务端等等一系列文件和包),安装完成如下:

四、检查 Redis 安装情况
我们可以通过下面的命令来查看是否安装成功并存在运行:
bash
netstat -anp | grep redis
这个命令是一个经典的组合,用于检查Redis服务器进程的网络连接情况。
命令分解:
netstat -anp
-
netstat
:一个用于显示网络连接、路由表、接口统计等信息的命令行工具。 -
-a
:显示所有连接和监听端口。 -
-n
:以数字形式显示地址和端口号(不进行DNS解析和服务名称查找),这样更快、更准确。 -
-p
:显示进程信息,即哪个程序在使用这个连接。 -
作用:列出系统中所有活跃的网络连接及其对应的进程。
|
:这是"管道"符。它将 netstat -anp
命令的输出结果 ,作为下一个命令 grep redis
的输入。
grep redis
-
grep
:一个强大的文本搜索工具。 -
redis
:要搜索的关键词。 -
作用 :从前面
netstat
输出的所有信息中,过滤出包含"redis"字样的行。
整体作用与输出示例:
将这三部分组合起来,这个命令的目的就是:快速找出与Redis进程相关的所有网络连接。
执行后,你可能会看到类似这样的输出:

整体概览: 我们来逐行分析这个 netstat
输出结果,这显示Redis服务器正在运行,并且只允许本地连接,拒绝了外部网络访问。
第一行:IPv4连接
-
tcp
:使用TCP协议 -
127.0.0.1:6379
:Redis服务监听在本地回环地址 的6379端口 -
0.0.0.0:*
:表示可以接受来自任何远程IP的连接(但受限于监听地址) -
LISTEN
:处于监听状态,等待连接 -
4004565/redis-serve
:进程ID为4004565,进程名是redis-server
关键点 :由于监听地址是127.0.0.1
,只有本机上的应用程序可以连接这个Redis服务。
第二行:IPv6连接
-
tcp6
:IPv6的TCP协议 -
::1:6379
:::1
是IPv6的本地回环地址(相当于IPv4的127.0.0.1) -
:::*
:IPv6的等效表示 -
同一个进程:同样是进程4004565,说明同一个Redis实例同时监听IPv4和IPv6的本地地址
**安全配置分析:**这种配置表明:
-
✅ 安全性较高:外部网络无法直接访问Redis
-
✅ 仅限本机访问:只有同一台服务器上的应用可以连接
-
❌ 无法远程管理:从其他机器无法连接到此Redis
-
🔧 如需远程访问 :需要修改Redis配置文件,将
bind
参数设置为0.0.0.0
或特定IP,并设置密码认证
这是一个标准的、安全的Redis默认安装配置,适合服务端应用与Redis在同一台机器上使用的场景。
常用场景:
-
快速确认Redis服务是否已启动 :如果这个命令有输出(特别是包含
LISTEN
状态的行),就说明Redis服务正在运行。 -
检查Redis监听的IP和端口 :确认Redis是只允许本地连接(
127.0.0.1:6379
)还是允许外部连接(0.0.0.0:6379
)。 -
查看有哪些客户端连接到了Redis :可能会看到很多
ESTABLISHED
状态的连接,后面跟着客户端的IP和端口。
现代替代命令: 需要注意的是,在许多新版本的Linux发行版中,netstat
已被认为"过时",推荐使用 ss
命令来替代,其功能和参数非常相似,而且更快。
等效的 ss
命令是:
bash
ss -anp | grep redis
它的输出格式与 netstat
非常相似,可以完成同样的工作。如下:

6379端口:
-
Redis服务的默认端口,就像每个网络服务都有一个唯一的"门牌号"。
-
类比:MySQL → 3306、HTTP → 80、HTTPS → 443、SSH → 22、Redis → 6379
-
当客户端要连接Redis服务器时,默认就是通过6379端口来访问的。
-
可以在Redis配置文件中修改这个端口号,但通常保持默认。
127.0.0.1(本地回环地址):
-
特殊的IP地址 ,永远指向本机自己。
-
作用:让运行在本机上的程序通过网络协议相互通信,但数据不会真的发到物理网络上去。
-
其他形式 :
localhost
(域名形式,通常解析为127.0.0.1)
两者结合的意义: 当你在netstat
中看到:127.0.0.1:6379 这表示:
-
Redis服务只在本机监听(127.0.0.1)
-
监听在默认的6379端口
-
只有本机上的程序能连接到这个Redis服务
-
外部网络的其他计算机无法访问,安全性较高
配置变化 :如果配置文件中绑定到 0.0.0.0:6379
,则意味着:
-
Redis服务监听所有网络接口
-
任何能访问到这台计算机的客户端都可以连接
-
适用于需要从外部访问Redis的场景,但要注意配置防火墙和密码认证。
五、修改Redis配置文件(修改两个地方)
如果此时我们需要远程访问云服务器上部署的Redis服务端的话,则需要修改Redis配置文件,将bind
参数设置为0.0.0.0
或特定IP,并设置密码认证(当前阶段我们可以不设置密码,后期使用到了再设置)。
是否需要为 Redis 设置密码? 不建议设置密码!虽然当前没有设置密码,但这种配置非常安全。 只要存储的数据价值不高,就完全不需要担心安全问题。我们主要是学习使用,并不是做什么公司业务,所以不设置也行的。
修改Redis配置文件,首先要cd到Redis的主要配置目录;而/etc/redis/
是 Redis 在 Linux 系统中的主要配置目录。
目录作用 :这是 Redis 服务器存放配置文件的核心位置,类似于:
-
MySQL →
/etc/mysql/
-
Nginx →
/etc/nginx/
-
Apache →
/etc/apache2/
bash
cd /etc/redis

我们通过ll命令详细查看Redis的
主要配置目录/etc/redis;可以看到里面有一个配置文件redis.conf,它是Redis的
主配置文件;我们目的是需要远程访问云服务器上部署的Redis服务端,则需要修改Redis配置文件的两个地方,如下:
bash
vim redis.conf
vim进去之后首先下拉找到需要修改的两个地方,然后跟着步骤来:
1、修改绑定地址 bind 0.0.0.0
**原配置:**bind 127.0.0.1 ::1
**修改后:**bind 0.0.0.0

含义和作用:
-
127.0.0.1
:只允许本机连接 -
0.0.0.0
:允许所有网络接口的连接 -
作用 :让Redis可以接受来自其他计算机的网络连接,而不仅仅是本机
关于IPv6的::1
:
-
::1
是IPv6的本地回环地址(等同于IPv4的127.0.0.1
) -
删除
::1
只保留0.0.0.0也
是可以的,因为:-
大多数环境使用IPv4就够了
-
0.0.0.0
通常也涵盖IPv6的监听
-
2、关闭保护模式 protected-mode no
**原配置:**protected-mode yes
**修改后:**protected-mode no

含义和作用:
-
protected-mode yes
:安全保护模式开启-
如果没有设置密码且只绑定127.0.0.1,拒绝外部连接
-
这是Redis的默认安全机制
-
-
protected-mode no
:关闭保护模式- 作用:允许外部客户端连接,即使没有设置密码
保存上面的两个配置修改并强制退出:

在配置文件中,我们也看到了配置中说明6379是Redis服务端的默认端口号:

⚠️ 安全警告:同时进行这两个修改后:
-
Redis将完全对外开放
-
任何能访问到你服务器IP的人都可以连接Redis
-
如果没有设置密码,数据将完全暴露
建议的安全措施(了解即可):(暂时不用设置)
sql
# 在redis.conf中设置密码
requirepass your_strong_password
# 或者使用防火墙限制访问
sudo ufw allow from 192.168.1.0/24 to any port 6379
这两个修改通常用于开发测试环境 或内网可信环境,生产环境务必配合密码和防火墙使用。
补充概念:
什么是配置文件?
配置文件 就是软件的"功能说明书"或"个性化设定菜单",它用文本形式告诉软件:应该如何运行、开启哪些功能、使用什么参数。
为什么需要配置文件?
1. 灵活性:同一款软件,通过不同配置可以适应不同场景。例子:Redis 可以配置成内存缓存、持久化数据库、或主从复制集群
2. 无需修改代码:普通用户不用懂编程就能定制软件行为、通过修改文本文件就能改变软件功能
3. 持久化设置:程序重启后,配置依然有效、不像命令行参数那样每次都要重新输入
配置文件的常见形式
文本格式:
sql
# Redis 配置文件示例
port 6379 # 服务端口
bind 0.0.0.0 # 绑定地址
requirepass mypassword # 访问密码
maxmemory 1gb # 内存限制
其他格式:
-
JSON格式:
{"port": 6379, "host": "0.0.0.0"}
-
YAML格式:更人类可读的层次结构
-
XML格式:比较重量级的配置
六、重新启动Redis服务端
bash
service redis-server restart
输入上面的重启Redis服务端命令之后没任何提示说明重启成功:

控制 Redis 服务端:
bash
#启动 Redis 服务端:
service redis-server start
#停止 Redis 服务端:
service redis-server stop
通过上面的控制命令,我们可以自由地控制Redis的服务端的开关,方便测试和学习工作的开展。
bash
service redis-server status
我们也可以使用status来查看Redis服务端的运行情况,可以看到active (running)就说明Redis重启之后正在运行:

使用刚刚安装的Redis其中的客户端连接云服务器上的Redis服务端:
bash
redis-cli
后面可以通过学到的命令来指定连接的Redis服务器的IP地址和端口,但当前使用默认值来连接服务端就可以了。输入上面的登录命令后直接回车,如下:

如上面的登录输出结果,默认连接了云服务器上(127.0.0.1)的Redis,端口号为默认端口号6379。
在Redis客户端中输入ping验证客户端是否登录连接成功验证,如下:
sql
ping
回车后输出PONG就是代表了连接Redis客户端成功:

这是一个很好的验证方法,用 ping
命令来验证连接是 Redis 的一个经典设计。
核心原因:简单的心跳检测机制 。你可以把 ping-PONG
理解为一次 "心跳" 或 "回声测试"。
1. 它的工作方式就像"对暗号"
-
客户端 :发出
ping
(意思是:"喂,你在吗?") -
Redis服务器 :如果运行正常且连接畅通,就会回复
PONG
(意思是:"我在,连接正常!")
这个过程完成了一次最简单的请求-响应循环。
2. 为什么不用更复杂的命令?(这些复杂的命令后面会学习到)
像 GET
、SET
这样的命令需要操作数据,如果只是为了测试连接,它们:
-
有副作用:可能会改变数据状态。
-
需要参数 :比如
GET key
,你需要提供一个键名。 -
更复杂:服务器需要执行更多逻辑。
而 ping
命令:
-
无任何副作用:不读取、不修改任何数据。
-
无需任何参数:直接使用。
-
极其轻量:服务器处理起来最快、最直接。
3. 它能综合验证什么?
一个成功的 ping-PONG
响应,实际上证明了以下几点全部正常:
-
网络连接:你的客户端和服务器之间的网络是通的。
-
Redis服务进程:Redis服务器正在运行并且正在监听。
-
身份认证:如果你设置了密码,客户端也已经成功认证。
-
协议通信:客户端和服务器能够正确地按照Redis协议进行通信。
总结 :ping-PONG
是Redis设计的一个最小、最纯粹、无副作用的连接健康度检查命令,它的成功返回是所有后续操作能够正常进行的基础。
七、退出Redis客户端(两种方法)
我们登录Redis客户端之后,若想退出的话可以使用Ctrl+d退出Redis客户端,相当于在Linux上输入了一个EOF文件结束符标记。很多用命令行的客户端都是可以这样退出的,比较通用,当然还有其他更优雅的退出方法,后面会补充:

核心概念:EOF(End Of File)。 Ctrl + D
在 Unix/Linux 系统中表示 EOF(文件结束符)。
工作原理:
1. 对于交互式命令行程序
-
当你在空行 按下
Ctrl + D
,相当于告诉程序:"我的输入结束了" -
Redis客户端收到这个信号,就理解为:"用户没有更多命令要输入了,可以退出了"
为什么很多命令行客户端都支持? 因为这是一种 标准Unix约定,很多交互式程序都遵循这个设计:
程序 | 退出方式 |
---|---|
Redis客户端 | Ctrl + D |
Python解释器 | Ctrl + D |
MySQL客户端 | Ctrl + D |
系统终端 | Ctrl + D (会退出登录) |
两种退出方式的区别(都可以使用)
-
quit
命令:程序定义的退出指令,Redis会优雅关闭连接 -
Ctrl + D
:系统级的"输入结束"信号,更通用,但可能不够优雅
总结 :Ctrl + D
是Unix系统的"通用退格键",告诉程序"我说完了",很多基于标准输入的命令行工具都会响应这个信号来退出。