大数据 -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 命令实现简单事务
官方网站为:
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 的发布版都在这里
我们也可以使用 wget 命令进行下载:
下载并保存到我们的 h121 云服务器:

解压配置
按照之前的习惯,对其进行解压和配置
常用编译开关
启用 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",开发排错
编译安装
进入源码的路径,我们准备编译:
目录中的文件大致如下:

使用指令进行编译:
此时将进行比较漫长的编译:

等待···

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

启动 Redis
先将配置文件复制一份:
修改复制出来的文件
将当中的内容修改为:
启动服务
可以看到 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,可选择:
也可以直接使用 redis:8.0.3-alpine 官方镜像省去编译环节。
这里只做简介,就不详细说了。
版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/6b47788f5a8dbb19bc2801500】。文章转载请联系作者。
评论