CentOS Linux安装部署Redis

前言

该安装是从Redis 源码编译安装到 Linux 系统,需要C的编译环境,还需要 libc 包,当前安装的Redis版本是redis-stable 7.4.0。


环境检查

使用命令查看linux信息,我的系统是 CentOS Linux 7 (Core)
要在 CentOS 7 上检查是否具备编译 Redis 所需的 C 编译器(GCC)和 libc 环境,你可以按照以下步骤进行操作:

  1. 检查 GCC 版本
    首先,你需要确认系统上是否已经安装了 GCC(GNU Compiler Collection)。如果已安装,你可以使用以下命令来查看 GCC 的版本:

    1
    gcc --version

    如果命令返回了版本信息,那么说明 GCC 已经安装好了。如果没有安装或未找到 GCC,你需要安装它。在 CentOS 7 上,你可以使用 yum 包管理器来安装 GCC:

    1
    sudo yum install gcc
  2. 检查 libc
    libc 是 C 标准库的一部分,通常与 GCC 一起安装。你不需要单独安装 libc,因为它通常是系统默认的一部分。如果你想要确认 libc 的版本,你可以查看 glibc 的版本。在 CentOS 7 中,glibc 的版本可以通过以下命令获取:

    1
    ldd --version

    这会显示 ld-linux-x86-64.so.2 或 ld-linux.so.2 的版本,它们是 glibc 的一部分。

  3. 检查必要的开发工具
    为了确保编译过程顺利,你还需要安装一些基本的开发工具,例如 make 和 autoconf。你可以使用以下命令来安装它们:

    1
    sudo yum install make autoconf
  4. 验证编译环境
    最后,你可以尝试编译一个小的 C 程序来验证编译环境是否正确设置。创建一个名为 hello.c 的文件,并写入以下内容:

    1
    2
    3
    4
    5
    6
    #include <stdio.h>

    int main() {
    printf("Hello, World!\n");
    return 0;
    }

    然后,编译并运行这个程序:

    1
    2
    gcc hello.c -o hello
    ./hello

    如果一切正常,你应该能看到 “Hello, World!” 的输出。
    通过上述步骤,你可以确认你的 CentOS 7 系统是否具备了编译 Redis 所需的基本编译环境。


参考资料

下载Redis

Redis 的源代码文件可以从下载页面获得。你可以通过与 redis-hashes Git 仓库中的摘要进行比较来验证这些下载文件的完整性
redis/redis-hashes

要从 Redis 的下载站点获取最新稳定版本的源代码文件,请运行以下命令:

1
2
3
wget https://download.redis.io/redis-stable.tar.gz
# 或者
wget http://download.redis.io/releases/redis-7.4.0.tar.gz

解压并安装Redis

  1. 解压

    1
    tar -xzvf redis-stable.tar.gz
  2. 移动redis目录

    1
    2
    mv /data/yunwei/redis-stable /usr/local/redis7
    cd /usr/local/redis7
  3. 编译

    1
    make
  4. 安装
    这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,

库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。

1
sudo make PREFIX=/usr/local/redis7 install
  1. 启动redis,是否正常启动,Ctrl-C 关闭程序
    1
    ./bin/redis-server ./redis.conf

业务配置(学习专用)

  1. 将 redis.conf 配置复制一份

    1
    2
    mkdir -p /data/yunwei/redis7/logs
    cp /usr/local/redis7/redis.conf /data/yunwei/redis7/redis.conf
  2. 修改配置

    1
    vi /data/yunwei/redis7/redis.conf

    修改的配置如下
    通过 /daemonize  查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果则使用 n字符切换到下一个即可,查找到结果后输入:noh退回到正常模式)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    # 守护线程启动
    daemonize yes

    # 监听绑定所有 ipv4 和 ipv6(学习专用配置不建议生产使用)
    bind * -::*

    # 保护模式(学习专用配置不建议生产使用)
    protected-mode no

    # 日志文件路径
    logfile "/data/yunwei/redis7/logs/redis_6379.log"

    # 服务启动pid记录文件路径
    pidfile /data/yunwei/redis7/redis_6379.pid

    # 数据保存的文件名
    dbfilename dump.rdb

    # 数据保存的路径
    dir /data/yunwei/redis7

    # 设置密码
    requirepass root
  3. 启动

    1
    /usr/local/redis7/bin/redis-server /data/yunwei/redis7/redis.conf
  4. 检查启动

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 查看程序是否启动
    ps -ef |grep redis

    # redis 连接
    /usr/local/redis7/bin/redis-cli -h 127.0.0.1 -p 6379
    # 连接后输入密码
    auth root
    # 查看redis info 信息
    info

防火墙设置

如果遇到连不上 ,telnet 都连不上对应端口时,可能是linux 开启防火墙了,需要将 6379 添加到防火墙中

  1. telnet 命令,看是否访问的到

    1
    telnet 192.168.0.106 6379
  2. 检查防火墙状态

    1
    sudo systemctl status firewalld

    如果防火墙处于关闭状态,可以跳过此步骤。如果防火墙处于运行状态,需要开放 MySQL 服务的端口(默认为3306

  3. 防火墙开放 MySQL 端口

    1
    2
    sudo firewall-cmd --permanent --add-port=6379/tcp
    sudo firewall-cmd --reload
  4. 查看指定区域所有打开的端口

    1
    firewall-cmd --zone=public --list-ports

配置开机启动

  1. 在 /etc/systemd/system/ 路径下创建 redis6379.service 文件

    1
    2
    cd /etc/systemd/system/
    vi redis6379.service
  2. 写入如下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [Unit]
    Description=Redis in-memory data store
    After=network.target

    [Service]
    Type=forking
    ExecStart=/usr/local/redis7/bin/redis-server /data/yunwei/redis7/redis.conf
    ExecStop=/usr/local/redis7/bin/redis-cli -h 127.0.0.1 -p 6379 -a root shutdown
    TimeoutStopSec=60s
    Restart=always
    RestartSec=10s

    [Install]
    WantedBy=multi-user.target
  3. 加载新的服务单元文件

    1
    sudo systemctl daemon-reload
  4. 启动 Redis 服务

    1
    sudo systemctl start redis6379
  5. 设置 Redis 服务开机启动

    1
    sudo systemctl enable redis6379
  6. 检查 Redis 服务状态

    1
    sudo systemctl status redis6379

配置文件信息

在目录/usr/local/redis下有一个redis.conf的配置文件。我们上面启动方式就是执行了该配置文件的配置运行的。我么可以通过cat、vi、less等Linux内置的读取命令读取该文件。

也可以通过redis-cli命令进入redis控制台后通过CONFIG GET * 的方式读取所有配置项。 如下:

1
2
redis-cli
CONFIG GET *
配置项名称 配置项值范围 说明
daemonize yes、no yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行
port 指定 Redis 监听端口,默认端口为 6379
bind 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。
protected-mode yes 、no 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。
timeout 300 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
loglevel debug、verbose、notice、warning 日志级别,默认为 notice
databases 16 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到
rdbcompression yes、no 指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。
dbfilename dump.rdb 指定本地数据库文件名,默认值为 dump.rdb
dir 指定本地数据库存放目录
requirepass 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭
maxclients 0 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
maxmemory XXX 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。
这里我要将daemonize改为yes,不然我每次启动都得在redis-server命令后面加符号&,不这样操作则只要回到Linux控制台则redis服务会自动关闭,同时也将bind注释,将protected-mode设置为no。
这样启动后我就可以在外网访问了。
1
vi /usr/local/redis/redis.conf

通过 /daemonize  查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果则使用 n字符切换到下一个即可,查找到结果后输入:noh退回到正常模式)


redis-cli 使用

redis-cli是连接本地redis服务的一个命令,通过该命令后可以既然怒redis的脚本控制台。

输入exit可以退出redis脚本控制台


CentOS Linux安装部署Redis
https://zouxiangzhong1998.github.io/blog/2024/08/8bda59f191d5.html
作者
Carlos
发布于
2024年8月22日
许可协议