Redis编译及安装教程

首先查看系统CPU架构及系统版本:

粗略信息:

hostnamectl

详细系统版本:

cat /etc/os-release

一、Redis 编译安装需要哪些环境

Redis 本身依赖不多,核心是:

软件作用是否必须
gccC 编译器必须
gcc-c++C++ 编译支持建议
make编译工具必须
tclRedis 测试工具可选
jemalloc-develRedis 内存分配优化建议
tar解压源码必须

麒麟 V10 基本兼容 CentOS/RHEL 生态。


二、先在离线服务器检测环境

下面给你一个完整检测脚本。

创建脚本:

mkdir /opt/redis_make
vi /opt/redis_make/check_redis_env.sh

内容:

#!/bin/bash

echo "=============================="
echo " Redis 编译环境检测"
echo "=============================="

missing=0

check_cmd () {
    if ! command -v $1 >/dev/null 2>&1; then
        echo ""
        echo "[缺失] $1"
        echo "作用: $2"
        echo "必要性: $3"
        missing=1
    fi
}

check_rpm () {
    if ! rpm -q $1 >/dev/null 2>&1; then
        echo ""
        echo "[缺失] $1"
        echo "作用: $2"
        echo "必要性: $3"
        missing=1
    fi
}

# 检测命令
check_cmd gcc "Redis源码编译所需C编译器" "必须"
check_cmd make "执行Makefile完成Redis编译" "必须"
check_cmd tar "解压Redis源码包" "必须"

# 检测rpm包
check_rpm gcc-c++ "部分依赖可能需要C++环境" "建议"
check_rpm jemalloc-devel "Redis高性能内存管理库" "不用,redis自带"
check_rpm tcl "Redis执行make test需要" "可选"

echo ""

if [ $missing -eq 0 ]; then
    echo "检测结果: Redis编译环境已满足"
else
    echo "检测结果: 存在缺失环境"
    echo "请根据缺失项准备对应rpm安装包"
fi

三、赋予执行权限

chmod +x /opt/redis_make/check_redis_env.sh

执行:

/opt/redis_make/check_redis_env.sh

四、如何准备离线 rpm 包

在另一台联网的麒麟/CentOS/RHEL机器下载 rpm 包,再拷贝进去

如果不知道下载那个版本

看 glibc 判断生态


情况1:glibc 2.28

通常兼容:

  • CentOS8
  • Rocky8
  • AlmaLinux8
  • RHEL8

可用 EL8 rpm


情况2:glibc 2.17

通常兼容:

  • CentOS7
  • RHEL7

可用 EL7 rpm


五、联网机器下载 Redis 编译依赖

方式1(推荐):使用 yumdownloader

先安装:

yum install yum-utils -y

创建目录:

mkdir redis_rpms
cd redis_rpms

下载:

yumdownloader --resolve \
gcc \
gcc-c++ \
make \
tcl \
jemalloc-devel \
tar

作用:

  • --resolve
    会自动下载依赖链。

方式2:在联网服务器中查看版本,并在网上下载

先搜索联网服务器中相关版本,入vim:

rpm -qf $(which vim)

得出相关版本到对应发行商rpm源中下载:

查不出具体的系统版本,可以去系统默认的rpm源查看,系统指向的那个路径,一般路径中就有对应的版本

进入源存放目录:

cd /etc/yum.repos.d/

查看目录下源内容

#麒麟服务器系统:
cat kylin_x86_64.repo
#openEuler:
cat openEuler.repo

麒麟V10: [Index of /NS/V10/V10SP3/os/adv/lic/base/x86_64/Packages/](Index of /NS/V10/)

openEuler: repo.openeuler.org/openEuler-24.03-LTS-SP2/OS/x86_64/Packages/

下在对应rpm,并上传

安装:

rpm -ivh *********.rpm

六、拷贝到离线服务器

可以用:

  • U盘
  • SCP
  • WinSCP
  • rz/sz

例如:

scp *.rpm root@离线服务器IP:/opt/redis_rpms/

七、离线安装 rpm 包

进入目录:

cd /opt/redis_make

执行:

rpm -Uvh *.rpm --force --nodeps

如果依赖顺序问题严重:

推荐:

yum localinstall -y *.rpm

即使离线也能安装本地 rpm。


八、再次检测环境

重新执行:

./check_redis_env.sh

直到:

检测结果: Redis编译环境已满足

九、准备 Redis 源码包

联网机器下载:

推荐稳定版:

redis-6.2.22.tar.gz 

官方下载:

Redis官方下载页

或者源码:

Redis Github Releases

上传到服务器:

例如:

/opt/redis/

十、解压 Redis

移动文件:

mv redis-6.2.22.tar.gz /opt/redis_make/

进入目录:

cd /opt/redis_make/

解压:

tar -zxvf redis-6.2.22.tar.gz -C /opt/redis_make/

进入源码目录:

cd redis-6.2.22

十一、开始编译 Redis

直接编译:

make

正常会看到:

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

表示编译成功。


十二、如果编译失败(最常见)

1、gcc 不存在

报错:

cc: command not found

说明 gcc 没装。


2、jemalloc 编译失败

报错类似:

jemalloc/jemalloc.h: No such file

解决:

make MALLOC=libc

这是离线环境最常用方案。

完整命令:

make MALLOC=libc

十三、安装 Redis

创建安装目录:

mkdir -p /opt/redis6

执行:

make PREFIX=/opt/redis6/ install

说明:

参数作用
PREFIX安装目录

安装后可查看目录下/opt/redis6/bin是否包含:

redis-server
redis-cli
redis-benchmark

十四、创建 Redis 运行目录

mkdir -p /opt/redis6/conf
mkdir -p /opt/redis6/data
mkdir -p /opt/redis6/logs

十五、复制配置文件

cp /opt/redis_make/redis-6.2.22/redis.conf /opt/redis6/conf/

十六、修改 Redis 配置

编辑:

vi /opt/redis6/conf/redis.conf

如何在vi 编辑文档时查找内容

[!TIP]

  1. 打开文件(如果尚未打开):

    vi /opt/redis6/conf/redis.conf
    
  2. 进入命令模式
    Esc 键,确保你处于命令模式(左下角没有 -- INSERT -- 提示)。

  3. 输入搜索命令
    输入 /requirepass 然后按 Enter

    • / 表示向下搜索
    • requirepass 是你要查找的文本
  4. 跳转结果

    • n 键:跳到下一个匹配项
    • N 键:跳到上一个匹配项

修改:

*(必须配置)、日志文件

logfile "/opt/redis6/logs/redis.log"

*(必须配置)、后台运行

daemonize yes

*(必须配置)、数据目录

dir /opt/redis6/data


1、绑定IP

允许远程:

bind 0.0.0.0

仅本机:

bind 127.0.0.1

2、关闭保护模式(内网可关闭)

protected-mode no


3、端口

port 6379

4、添加密码

requirepass cqabj208

十七、启动 Redis

/opt/redis6/bin/redis-server /opt/redis6/conf/redis.conf

十八、检查 Redis 是否启动

查看进程:

ps -ef | grep redis

查看端口:

netstat -lntp | grep 6379

如果没有 netstat:

ss -lntp | grep 6379

十九、连接 Redis

/opt/redis6/bin/redis-cli

执行:

ping

返回:

PONG

说明安装成功。


二十、配置 systemd 服务(推荐)

创建:

vi /usr/lib/systemd/system/redis.service

内容:

[Unit]
Description=Redis
After=network.target

[Service]
Type=forking

ExecStart=/opt/redis6/bin/redis-server /opt/redis6/conf/redis.conf
ExecStop=/opt/redis6/bin/redis-cli shutdown

Restart=always

[Install]
WantedBy=multi-user.target

二十一、加载服务

加载服务:

systemctl daemon-reload

记得停止刚刚启动Redis

ps -ef | grep redis  #查询出PID,使用 kill -9 [PID] 杀掉进程

启动:

systemctl start redis

查看状态:

systemctl status redis

开机启动:

systemctl enable redis

二十二、离线环境最容易踩的坑

1、glibc 版本不兼容

联网机器下载 rpm 时:

必须:

  • 同版本麒麟
  • 同CPU架构

查看:

cat /etc/os-release
uname -m

2、gcc版本太低

Redis 7 推荐 GCC 5+

查看:

gcc -v

3、make 编译卡死

通常是:

  • 内存不足
  • swap不足

查看:

free -h

二十三、企业里更推荐的方法(非常重要)

很多生产环境:

不会源码编译 Redis。

而是:

直接准备编译好的二进制包

因为:

  • 避免 gcc 环境
  • 避免依赖地狱
  • 更稳定
  • 更容易标准化部署

也就是:

联网机器编译好:

make PREFIX=/opt/redis6 install

然后直接打包:

tar -zcvf /opt/redis6.tar.gz /opt/redis6

离线服务器直接解压即可运行。

这个是很多内网生产环境真实做法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值