我们这里使用源码编译安装的方式:下载redis的安装包(可以自己去官网,下载想要的版本),这里提供网盘链接,
自行获取: redis-7.2.4.tar.gz 提取码: 2jq4

一、下载

个人将其放在了云服务器的 /usr/local/src 下新建了 Redis包
使用命令进行解压缩:

tar -zxvf 文件名

完成后,进入到解压好的目录redis下执行编译命令:

//编译命令
make
//初始化命令
make install

二、配置

修改redis.conf

在这里插入图片描述

1. 绑定IP地址

在这里插入图片描述
这一行指令同时绑定了两个地址,具体含义如下:

  • 0.0.0.0 (IPv4)

    • 含义:表示 Redis 将监听服务器上 所有的 IPv4 网络接口。

    • 效果:这意味着 不仅 本机(localhost)可以连接,局域网或公网 上的其他计算机只要能访问服务器的 IP,就可以连接到这个 Redis 服务。

    • 用途:通常用于允许 远程连接(Remote Access)。

  • ::1 (IPv6)

    • 含义:这是 IPv6 协议下的 回环地址(Loopback Address)。

    • 效果:等同于 IPv4 的 127.0.0.1,仅允许通过 IPv6 协议进行本地连接。

2. 保护模式

在这里插入图片描述

  1. 这行配置的含义
    将 protected-mode 设置为 no,意味着你手动关闭了 Redis 的安全自我保护机制。
  • 默认情况 (yes):Redis 为了防止误操作,如果你配置了允许外部连接(bind 0.0.0.0)但没有设置密码,它会强制拒绝外部连接,只允许本机访问。
  • 当前配置 (no):你告诉 Redis:“我知道我在做什么,请允许外部连接,哪怕我没有设置密码。”
  1. 结合你上一张图片的后果
    结合你之前展示的 bind 0.0.0.0,现在的状态是:

    1. 大门敞开 (bind 0.0.0.0):允许任何 IP 连接。
    2. 保安撤岗 (protected-mode no):不再检查是否配置了密码。

结果: 此时,任何能够通过网络 ping 通你服务器 IP 的人,都可以直接连接你的 Redis,并且拥有最高权限(读写数据、清空数据库等),不需要任何密码。

  1. 为什么会有这种配置?(使用场景)
    虽然这看起来很危险,但在以下场景中是常见的:
  • 完全隔离的内网环境:应用服务器和 Redis 在同一个安全的局域网内,外部无法访问。
  • 容器化环境 (Docker/K8s):Redis 运行在容器内部,依靠 Docker 的网络隔离来保证安全,不需要 Redis 自身进行拦截。
  • 开发/测试环境:为了方便调试,不想每次连接都输密码。

3. 指定访问Redis的端口号

在这里插入图片描述

  • 含义: 指定 Redis 监听的 TCP 端口号。
  • 6379 是什么? 这是 Redis 的官方默认端口。就好比 MySQL 默认用 3306,HTTP 默认用 80 一样。
  • 作用: 当你使用 Java (Spring Boot)、Python 或命令行连接 Redis 时,如果不特意指定端口,程序都会默认去找 6379。
  • 示例:在 Spring Boot 的 application.yml 中,通常配置 port: 6379。

4. 是否作用守护进程使用

在这里插入图片描述

  • 含义:告诉 Redis 不要 以守护进程(Daemon)的方式在后台运行,而是作为前台进程运行。
  • 直观效果:
    • 设置 no(当前状态):当你输入启动命令(如 redis-server)后,Redis 会直接占用当前的终端窗口(命令行界面)。你会看到日志实时打印在屏幕上。如果你关闭这个窗口或按 Ctrl+C,Redis 服务就会停止。
    • 设置 yes:Redis 会在启动后自动“隐身”转到后台运行,你可以继续在这个终端窗口输入其他命令,且关闭窗口后 Redis 依然在运行。
  • 适用场景:
    • Docker 容器(最常见):在 Docker 中,通常必须设置为 daemonize no。因为 Docker 容器如果检测到前台进程结束(如果设为 yes,Redis 就会退出前台),容器就会认为服务停止了而自动关闭。

    • 调试/开发:方便直接看到报错和日志。

5. 设置redis强密码

在这里插入图片描述

  • 指令:requirepass [强密码]

  • 含义:你启用了 密码认证。

  • 重要性:这完全改变了我们之前的结论。

    • 之前看到 protected-mode no 和 bind 0.0.0.0 时,我警告你是“裸奔”状态。
    • 但现在,既然你配置了 requirepass,说明访问者必须提供正确的密码才能操作数据。这大大提高了安全性。

完成上面的五个配置后,现在的redis状态就是:

  • 可访问性:高(允许远程连接)。
  • 安全性:中/高(依赖于你密码的复杂度)。
    • 只要你的密码足够长、足够复杂,这个配置在开发和一般生产环境中是可以接受的。

建议: 既然允许公网/远程连接,请确保你的密码(被马赛克遮住的部分)是非常复杂的(包含字母、数字、符号且长度较长),因为 Redis 的破解速度非常快,简单密码很容易被暴力破解。

开放端口

在控制台和云服务器上均开放 33066379 端口(均为默认)

云服务器相关指令

  • 防火墙状态检查:firewall-cmd --state
  • 关闭防火墙:systemctl stop firewalld.service
  • 开启防火墙:systemctl start firewalld.service
  • 关闭开机防火墙自启动:systemctl disable firewalld.service
  • 开启防火墙开机自启动:systemctl enable firewalld.service
  • 查看防火墙开放端口:firewall-cmd --list-ports
  • 防火墙对某一端口开放(即,对某端口防火墙不起作用):firewall-cmd --zone=public --add-port=XXXX/tcp --permanent
  • 重启防火墙服务:firewall-cmd --reload

更多推荐