写点什么

大数据 -39 Redis 源码编译安装 启动 redis-server redis-cli

作者:武子康
  • 2025-07-13
    美国
  • 本文字数:2405 字

    阅读完需:约 8 分钟

大数据-39 Redis 源码编译安装 启动 redis-server redis-cli

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI 篇持续更新中!(长期更新)

AI 炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究,持续打造实用 AI 工具指南!📐🤖

💻 Java 篇正式开启!(300 篇)

目前 2025 年 07 月 10 日更新到:Java-68 深入浅出 分布式服务 Netty 实现自定义 RPC 附详细代码 MyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务正在更新!深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300 篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解


章节内容

上一节我们完成了:


  • Redis 简介

  • Redis 数据类型介绍

  • 缓存的场景

  • 读写模式介绍

  • Redis 的适用场景


背景介绍这里是三台公网云服务器,每台 2C4G,搭建一个大数据的学习环境,供我学习。


  • 2C4G 编号 h121

  • 2C4G 编号 h122

  • 2C2G 编号 h123


Redis 简介

Redis(Remote Dictionary Server)是一个开源的、高性能的键值对存储系统,采用 C 语言开发。它支持多种数据结构,可用作数据库、缓存和消息中间件。Redis 以其出色的性能著称,能够处理高吞吐量的数据操作,被广泛应用于 Web 应用、实时分析、游戏开发等领域。


主要特点:


  • 内存存储:数据主要存储在内存中,读写速度极快

  • 持久化支持:提供 RDB 和 AOF 两种持久化机制

  • 丰富的数据结构:支持字符串、哈希、列表等多种数据结构

  • 高可用性:支持主从复制和哨兵模式

  • 事务支持:通过 MULTI/EXEC 命令实现简单事务


官方网站为:


http://redis.io/
复制代码

Redis 数据类型

Redis 支持五种核心数据类型,每种类型都有特定的使用场景和操作命令:

1. 字符串类型(String)

最基本的数据类型,可以存储字符串、整数或浮点数。最大能存储 512MB。典型应用场景:


  • 缓存简单数据

  • 计数器(如页面访问量)

  • 分布式锁

2. 散列类型(Hash)

适合存储对象,由字段-值对组成。每个哈希可以存储 4 亿多个字段-值对。典型应用场景:


  • 存储用户对象(用户名、年龄等信息)

  • 购物车数据

3. 列表类型(List)

有序的字符串集合,按照插入顺序排序。支持从两端插入/删除元素。典型应用场景:


  • 消息队列

  • 最新动态展示

  • 粉丝列表

4. 集合类型(Set)

无序的字符串集合,不允许重复元素。支持集合运算(交集、并集等)。典型应用场景:


  • 标签系统

  • 共同好友

  • 去重统计

5. 有序集合类型(Sorted Set)

每个元素都关联一个分数(score),用于排序。元素唯一,但分数可以重复。典型应用场景:


  • 排行榜

  • 带权重的队列

  • 范围查询

为什么要自己编译?

  • 跟进安全补丁:8.0.3 (2025-07 发布)修复了 HyperLogLog 越界写等 CVE,发行版仓库通常要过数周甚至数月才更新。自行编译能第一时间闭环安全风险。

  • 开启/关闭可选特性:核心二进制默认仅含传统数据结构。想用 JSON、Search、TimeSeries、Bloom 等,需要 BUILD_WITH_MODULES=yes。

  • 对接企业基础设施:例如编译进 TLS 支持 (BUILD_TLS=yes) 以符合内网安全规范,或用 USE_SYSTEMD=yes 生成 systemd 单元,减少手工维护。

  • 性能/调试自由度:可指定 `MALLOC=jemalloc

环境推荐

  • 最低要求:C11 兼容编译器、GNU make、libc。

  • 推荐:GCC ≥ 10 或 Clang ≥ 13,pkg-config,openssl-devel(TLS),tcl ≥ 8.5(跑单测)。

Redis 下载

Redis 的发布版都在这里


http://download.redis.io/releases/
复制代码


我们也可以使用 wget 命令进行下载:


wget http://download.redis.io/releases/redis-6.2.9.tar.gz
复制代码


下载并保存到我们的 h121 云服务器:


解压配置

按照之前的习惯,对其进行解压和配置


tar -zxvf redis-6.2.9.tar.gzmv redis-6.2.9 ../servers/
复制代码

常用编译开关

  • 启用 TLS:make BUILD_TLS=yes,需 libssl-dev / openssl-devel

  • 打包所有官方模块:make BUILD_WITH_MODULES=yes,获得 JSON / Search / TS 等

  • systemd 集成:make USE_SYSTEMD=yes,生成 redis.service

  • 32-bit 二进制:make 32bit,非常态,测试内存 < 4 GiB 场景

  • 指定内存分配器:make MALLOC=libc 或 jemalloc,Linux 默认 jemalloc

  • 去掉 -Werror:make DISABLE_WERRORS=yes,某些老编译器警告过严时

  • 调试符号 / ASAN:make DEBUG=yes 或 手动 CFLAGS="-O0 -g -fsanitize=address",开发排错

编译安装

进入源码的路径,我们准备编译:


cd redis-6.2.9/src
复制代码


目录中的文件大致如下:



使用指令进行编译:


make
复制代码


此时将进行比较漫长的编译:



等待···



当看到上图的内容时,表示你的 Redis 已经编译完毕了,我们执行如下指令进行安装:


mkdir /usr/redis -pmake install PREFIX=/usr/redis
复制代码


可以看到已经顺利的完成了 Redis 的编译+安装


启动 Redis

先将配置文件复制一份:


cd /opt/servers/redis-6.2.9cp redis.conf /usr/redis/bin/
复制代码


修改复制出来的文件


vim /usr/redis/bin/redis.conf
复制代码


将当中的内容修改为:


daemonize yesbind 0.0.0.0protected-mode no
复制代码


启动服务


cd /usr/redis/bin./redis-server redis.conf
复制代码


可以看到 Redis 服务已经正常运行了:


参数调优

  • vm.overcommit_memory = 1:立即 commit 内存,避免 fork AOF 时 OOM

  • 关闭透明大页:echo never > /sys/kernel/mm/transparent_hugepage/enabled,减少内存抖动

  • 文件句柄:ulimit -n 65535,高并发连接

  • swap:保持足够;同时配置 vm.swappiness=1,防止 Redis 被交换到磁盘

容器场景

若最终目标是 Docker,可选择:


# 基于官方源码镜像自行编译FROM debian:12-slimRUN apt update && apt install -y build-essential pkg-config \           libssl-dev tcl git wget ca-certificatesRUN useradd -r -s /sbin/nologin redisWORKDIR /usr/local/srcRUN wget -O redis-8.0.3.tar.gz \        https://github.com/redis/redis/archive/refs/tags/8.0.3.tar.gz \ && tar -xf redis-8.0.3.tar.gz \ && cd redis-8.0.3 && make BUILD_TLS=yes -j$(nproc) \ && make install PREFIX=/usr/local...
复制代码


也可以直接使用 redis:8.0.3-alpine 官方镜像省去编译环节。


这里只做简介,就不详细说了。

发布于: 刚刚阅读数: 5
用户头像

武子康

关注

永远好奇 无限进步 2019-04-14 加入

Hi, I'm Zikang,好奇心驱动的探索者 | INTJ / INFJ 我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。 坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。

评论

发布
暂无评论
大数据-39 Redis 源码编译安装 启动 redis-server redis-cli_Java_武子康_InfoQ写作社区