redis/redis
GitHub: redis/redis
Redis 是一个开源的高性能内存数据结构存储系统,集缓存、数据库、消息代理和向量搜索引擎于一体,以亚毫秒级延迟和丰富的数据类型著称。
Stars: 73226 | Forks: 24510
[](https://codecov.io/github/redis/redis)
本文档既是 Redis 的快速入门指南,也是从源码构建它的详细资源。
- Redis 新手?从 [Redis 是什么](#what-is-redis) 和 [入门指南](#getting-started) 开始
- 准备好从源码构建了吗?跳转到 [从源码构建 Redis](#build-redis-from-source)
- 想要贡献代码?请参阅 [代码贡献](#code-contributions) 部分
以及 [CONTRIBUTING.md](./CONTRIBUTING.md)
- 寻找详细文档?导航至 [redis.io/docs](https://redis.io/docs/)
## 目录
- [Redis 是什么?](#what-is-redis)
- [主要用例](#key-use-cases)
- [为什么选择 Redis?](#why-choose-redis)
- [什么是 Redis Open Source?](#what-is-redis-open-source)
- [入门](#getting-started)
- [Redis 入门项目](#redis-starter-projects)
- [通过客户端库使用 Redis](#using-redis-with-client-libraries)
- [通过 redis-cli 使用 Redis](#using-redis-with-redis-cli)
- [通过 Redis Insight 使用 Redis](#using-redis-with-redis-insight)
- [Redis 数据类型、处理引擎和功能](#redis-data-types-processing-engines-and-capabilities)
- [云端托管的 Redis](#cloud-hosted-redis)
- [社区](#community)
- [从源码构建 Redis](#build-redis-from-source)
- [构建并运行包含所有数据结构的 Redis - Ubuntu 20.04 (Focal)](#build-and-run-redis-with-all-data-structures---ubuntu-2004-focal)
- [构建并运行包含所有数据结构的 Redis - Ubuntu 22.04 (Jammy)](#build-and-run-redis-with-all-data-structures---ubuntu-2204-jammy)
- [构建并运行包含所有数据结构的 Redis - Ubuntu 24.04 (Noble)](#build-and-run-redis-with-all-data-structures---ubuntu-2404-noble)
- [构建并运行包含所有数据结构的 Redis - Debian 11 (Bullseye) / 12 (Bookworm)](#build-and-run-redis-with-all-data-structures---debian-11-bullseye--12-bookworm)
- [构建并运行包含所有数据结构的 Redis - AlmaLinux 8.10 / Rocky Linux 8.10](#build-and-run-redis-with-all-data-structures---almalinux-810--rocky-linux-810)
- [构建并运行包含所有数据结构的 Redis - AlmaLinux 9.5 / Rocky Linux 9.5](#build-and-run-redis-with-all-data-structures---almalinux-95--rocky-linux-95)
- [构建并运行包含所有数据结构的 Redis - macOS 13 (Ventura) 和 macOS 14 (Sonoma)](#build-and-run-redis-with-all-data-structures---macos-13-ventura-and-macos-14-sonoma)
- [构建并运行包含所有数据结构的 Redis - macOS 15 (Sequoia)](#build-and-run-redis-with-all-data-structures---macos-15-sequoia)
- [构建 Redis - 标志和一般说明](#building-redis---flags-and-general-notes)
- [修复依赖项或缓存构建选项的构建问题](#fixing-build-problems-with-dependencies-or-cached-build-options)
- [修复构建 32 位二进制文件的问题](#fixing-problems-building-32-bit-binaries)
- [分配器](#allocator)
- [单调时钟](#monotonic-clock)
- [详细构建](#verbose-build)
- [使用 TLS 运行 Redis](#running-redis-with-tls)
- [代码贡献](#code-contributions)
- [Redis 商标](#redis-trademarks)
## Redis 是什么?
对于构建实时数据驱动应用程序的开发人员来说,Redis 是首选、最快且功能最丰富的缓存、数据结构服务器,以及文档和向量查询引擎。
### 主要用例
Redis 在各种应用中表现出色,包括:
- **缓存:** 支持多种逐出策略、键过期和哈希字段过期。
- **分布式会话存储:** 提供灵活的会话数据建模(字符串、JSON、哈希)。
- **数据结构服务器:** 提供低级数据结构(字符串、列表、集合、哈希、有序集合、JSON 等)和高级语义(计数器、队列、排行榜、限流器),并支持事务和脚本编写。
- **NoSQL 数据存储:** 键值、文档和时间序列数据存储。
- **搜索和查询引擎:** 为哈希/JSON 文档建立索引,支持通过 Redis Query Engine 进行向量搜索、全文搜索、地理空间查询、排名和聚合。
- **事件存储和消息代理:** 实现队列(列表)、优先级队列(有序集合)、事件去重(集合)、流以及具有概率流处理能力的发布/订阅。
- **GenAI 的向量存储:** 与 AI 应用程序(例如 LangGraph、mem0)集成,用于短期记忆、长期记忆、LLM 响应缓存(语义缓存)和检索增强生成 (RAG)。
- **实时分析:** 支持个性化、推荐、欺诈检测和风险评估。
## 为什么选择 Redis?
凭借速度、灵活性和丰富功能集的结合,Redis 成为全球开发人员的热门选择。以下是人们选择 Redis 的原因:
- **性能:** 因为 Redis 主要将数据保存在内存中并使用高效的数据结构,所以它在读写操作上都能实现极低的延迟(通常为亚毫秒级)。这使其成为要求实时响应的应用程序的理想选择。
- **灵活性:** Redis 不仅仅是键值存储,它原生支持 [Redis 是什么?](#what-is-redis) 中列出的广泛数据结构和功能。
- **可扩展性:** Redis 不限于内置的数据结构,它拥有一个 [modules API](https://redis.io/docs/latest/develop/reference/modules/),可以扩展 Redis 功能并快速实现新的 Redis 命令。
- **简单性:** Redis 拥有简单的基于文本的协议和 [文档齐全的命令集](https://redis.io/docs/latest/commands/)。
- **普遍性:** Redis 在大规模生产工作负载中经过实战检验。您每天很可能间接地与 Redis 进行多次交互。
- **多功能性**:Redis 是以下用例的事实标准:
- **缓存:** 快速访问常用数据,无需查询主数据库。
- **会话管理:** 读写用户会话数据,而不损害用户体验或减慢每个 API 调用。
- **查询、排序和分析:** 尽可能快地对内存中数据执行去重、全文搜索和二级索引。
- **消息传递和服务间通信:** 用于服务间通信的作业队列、消息代理、发布/订阅和流。
- **向量操作:** 长期和短期 LLM 记忆、RAG 内容检索、语义缓存、语义路由和向量相似性搜索。
总之,Redis 提供了一个强大、快速且灵活的工具包,用于解决各种数据管理挑战。如果您想了解更多,这里有一些起点列表:
- [**Redis 数据类型介绍**](https://redis.io/docs/latest/develop/data-types/)
- [**Redis 命令完整列表**](https://redis.io/commands/)
- [**Redis for AI**](https://redis.io/docs/latest/develop/ai/)
- [**Redis 文档**](https://redis.io/documentation/)
## 什么是 Redis Open Source?
Redis Community Edition (Redis CE) 在 v8.0 版本中更名为 Redis Open Source。
Redis Ltd. 还提供 [Redis Software](https://redis.io/enterprise/),这是一款自管理软件,具有额外的合规性、可靠性和弹性,适合企业扩展,
以及 [Redis Cloud](https://redis.io/cloud/),这是一项与 Google Cloud、Azure 和 AWS 集成的全托管服务,适用于生产就绪的应用程序。
在此处阅读有关 Redis Open Source 和 Redis 之间差异的更多信息 [](https://redis.io/technology/advantages/)。
## 入门
如果您想快速启动并运行 Redis 而无需从源码构建,请使用以下方法之一:
- [**Redis Cloud**](https://cloud.redis.io/)
- [**官方 Redis Docker 镜像 (Alpine/Debian)**](https://hub.docker.com/_/redis)
docker run -d -p 6379:6379 redis:latest
- **Redis 二进制发行版**
- [**Snap**](https://github.com/redis/redis-snap)
- [**Homebrew**](https://github.com/redis/homebrew-redis)
- [**RPM**](https://github.com/redis/redis-rpm)
- [**Debian**](https://github.com/redis/redis-debian)
- [**Redis 快速入门指南**](https://redis.io/docs/latest/develop/get-started/)
如果您更喜欢 [从源码构建 Redis](#build-redis-from-source) - 请参阅下面的说明。
### Redis 入门项目
要使用您选择的语言尽快开始,请使用以下入门项目之一:
- [**Python (redis-py)**](https://github.com/redis-developer/redis-starter-python)
- [**C#/.NET (NRedisStack/StackExchange.Redis)**](https://github.com/redis-developer/redis-starter-csharp)
- [**Go (go-redis)**](https://github.com/redis-developer/redis-starter-go)
- [**JavaScript (node-redis)**](https://github.com/redis-developer/redis-starter-js)
- [**Java/Spring (Jedis)**](https://github.com/redis-developer/redis-starter-java)
### 通过客户端库使用 Redis
要将您的应用程序连接到 Redis,您需要一个客户端库。Redis 在大多数流行语言中都有文档完善的客户端库,并在其他语言中提供社区支持的客户端库。
- [**Python (redis-py)**](https://redis.io/docs/latest/develop/clients/redis-py/)
- [**Python (RedisVL)**](https://redis.io/docs/latest/integrate/redisvl/)
- [**C#/.NET (NRedisStack/StackExchange.Redis)**](https://redis.io/docs/latest/develop/clients/dotnet/)
- [**JavaScript (node-redis)**](https://redis.io/docs/latest/develop/clients/nodejs/)
- [**Java (Jedis)**](https://redis.io/docs/latest/develop/clients/jedis/)
- [**Java (Lettuce)**](https://redis.io/docs/latest/develop/clients/lettuce/)
- [**Go (go-redis)**](https://redis.io/docs/latest/develop/clients/go/)
- [**PHP (Predis)**](https://redis.io/docs/latest/develop/clients/php/)
- [**C (hiredis)**](https://redis.io/docs/latest/develop/clients/hiredis/)
- [**客户端库完整列表**](https://redis.io/docs/latest/develop/clients/)
### 通过 redis-cli 使用 Redis
[`redis-cli`](https://redis.io/docs/latest/develop/tools/cli/) 是 Redis 的命令行界面。它是所有二进制发行版的一部分,当您从源码构建 Redis 时也可用。
您可以启动一个 redis-server 实例,然后在另一个终端中尝试以下操作:
```
cd src
./redis-cli
```
```
redis> ping
PONG
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer) 1
redis> incr mycounter
(integer) 2
redis>
```
### 通过 Redis Insight 使用 Redis
为了获得更直观和用户友好的体验,请使用 [Redis Insight](https://redis.io/docs/latest/develop/tools/insight/) - 该工具让您可以探索数据、设计、开发和优化应用程序,同时也是一个 Redis 教育和入门平台。Redis Insight 集成了 [Redis Copilot](https://redis.io/chat),这是一个自然语言 AI 助手,可改善处理数据和命令时的体验。
- [**Redis Insight 文档**](https://redis.io/docs/latest/develop/tools/insight/)
- [**Redis Insight GitHub 仓库**](https://github.com/RedisInsight/RedisInsight)
## Redis 数据类型、处理引擎和功能
Redis 提供多种数据类型、处理引擎和功能,以支持广泛的用例:
**重要:** 标有星号 (\*) 的功能需要在[从源码构建 Redis](#build-redis-from-source) 时使用 `BUILD_WITH_MODULES=yes` 标志编译 Redis。
- [**String:**](https://redis.io/docs/latest/develop/data-types/strings) 字节序列,包括文本、序列化对象和二进制数组,用于缓存、计数器和位操作。
- [**JSON:**](https://redis.io/docs/latest/develop/data-types/json/) 嵌套 JSON 文档,可使用 JSONPath 表达式和 [Redis Query Engine](https://redis.io/docs/latest/develop/interact/search-and-query/) 进行索引和搜索。
- [**Hash:**](https://redis.io/docs/latest/develop/data-types/hashes/) 字段-值映射,用于表示基本对象和存储键值对组,并支持 [哈希字段过期 (TTL)](https://redis.io/docs/latest/develop/data-types/hashes/#field-expiration)。
- [**Redis Query Engine:**](https://redis.io/docs/latest/develop/interact/search-and-query/) 将 Redis 用作文档数据库、向量数据库、二级索引和搜索引擎。为哈希和 JSON 文档定义索引,然后使用丰富的查询语言进行向量搜索、全文搜索、地理空间查询和聚合。
- [**List:**](https://redis.io/docs/latest/develop/data-types/lists/) 字符串值的链表,用作栈、队列和队列管理。
- [**Set:**](https://redis.io/docs/latest/develop/data-types/sets/) 唯一字符串的无序集合,用于跟踪唯一项目、关系和常见的集合操作(交集、并集、差集)。
- [**Sorted set:**](https://redis.io/docs/latest/develop/data-types/sorted-sets/) 由关联分数排序的唯一字符串集合,用于排行榜和限流器。
- [**Vector set (beta):**](https://redis.io/docs/latest/develop/data-types/vector-sets/) 向量嵌入的集合,用于语义相似性搜索、语义缓存、语义路由和检索增强生成 (RAG)。
- [**Geospatial indexes:**](https://redis.io/docs/latest/develop/data-types/geospatial/) 用于查找给定半径或边界框内附近点的坐标。
- [**Bitmap:**](https://redis.io/docs/latest/develop/data-types/bitmaps/) 在字符串类型上定义的一组面向位的操作,用于高效的集合表示和对象权限。
- [**Bitfield:**](https://redis.io/docs/latest/develop/data-types/bitfields/) 二进制编码字符串,允许您设置、递增和获取任意位长度的整数值,用于有限范围计数器、数值和多级对象权限,例如基于角色的访问控制 (RBAC)。
- [**Hyperloglog:**](https://redis.io/docs/latest/develop/data-types/probabilistic/hyperloglogs/) 一种用于近似集合基数的概率数据结构,用于分析,例如计算唯一访问量、表单填写量等。
- \*[**Bloom filter:**](https://redis.io/docs/latest/develop/data-types/probabilistic/bloom-filter/) 一种概率数据结构,用于检查给定值是否存在于集合中。用于欺诈检测、广告投放和唯一列(即用户名/电子邮件/slug)检查。
- \*[**Cuckoo filter:**](https://redis.io/docs/latest/develop/data-types/probabilistic/cuckoo-filter/) 一种概率数据结构,用于检查给定值是否存在于集合中,同时允许有限的计数和删除,用于定向广告和优惠券代码验证。
- \*[**t-digest:**](https://redis.io/docs/latest/develop/data-types/probabilistic/t-digest/) 一种概率数据结构,用于估计大型数据的百分位数,无需存储和排序所有数据点。用于硬件/软件监控、在线游戏、网络流量监控和预测性维护。
- \*[**Top-k:**](https://redis.io/docs/latest/develop/data-types/probabilistic/top-k/) 一种概率数据结构,用于查找数据流中最频繁的值,用于趋势发现。
- \*[**Count-min sketch:**](https://redis.io/docs/latest/develop/data-types/probabilistic/count-min-sketch/) 一种概率数据结构,用于估计给定值在数据流中出现的次数,用于销量计算。
- [**Time series:**](https://redis.io/docs/latest/develop/data-types/timeseries/) 按时间顺序索引的数据点,用于监控传感器数据、资产
跟踪和预测分析
- [**Pub/sub**:](https://redis.io/docs/latest/develop/interact/pubsub/) 一种轻量级消息传递功能。发布者向频道发送消息,订阅者从该频道接收消息。
- [**Stream**:](https://redis.io/docs/latest/develop/data-types/streams/) 具有随机访问能力和复杂消费策略(如消费者组)的仅追加日志。用于事件溯源、传感器监控和通知。
- [**Transaction:**](https://redis.io/docs/latest/develop/interact/transactions/) 允许在单个步骤中执行一组命令。另一个客户端发送的请求永远不会在事务执行中间被处理。这保证了命令作为单个隔离操作执行。
- [**可编程性:**](https://redis.io/docs/latest/develop/interact/programmability/eval-intro/) 在服务器上上传和执行 Lua 脚本。脚本可以使用程序控制结构,并在执行时使用大多数命令来访问数据库。因为脚本是在服务器上执行的,所以从脚本读取和写入数据非常高效。
## 云端托管的 Redis
全托管 Redis,提供大规模的实时性能。
[**Redis Cloud**](https://redis.io/cloud/)
## 社区
[**Redis 社区资源**](https://redis.io/community/)
## 从源码构建 Redis
本节介绍如何从源码构建 Redis。如果您想快速启动并运行 Redis 而无需从源码构建,请参阅 [入门部分](#getting-started)。
### 构建并运行包含所有数据结构的 Redis - Ubuntu 20.04 (Focal)
使用以下 Docker 镜像测试:
- ubuntu:20.04
1. 安装所需的依赖项
更新您的软件包列表并安装必要的开发工具和库:
apt-get update
apt-get install -y sudo
sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf gcc-10 g++-10 libtool
2. 使用 GCC 10 作为默认编译器
将系统的默认编译器更新为 GCC 10:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
3. 安装 CMake
使用 `pip3` 安装 CMake 并链接它以供系统范围访问:
pip3 install cmake==3.31.6
sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake
cmake --version
注意:CMake 版本 3.31.6 是支持的最新版本。不能使用更新的版本。
4. 下载 Redis 源码
从 GitHub 下载特定版本的 Redis 源代码归档。
将 `` 替换为 Redis 版本,例如:`8.0.0`。
cd /usr/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
5. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd /usr/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
6. 构建 Redis
设置必要的环境变量并编译 Redis:
cd /usr/src/redis-
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
7. 运行 Redis
cd /usr/src/redis-
./src/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - Ubuntu 22.04 (Jammy)
使用以下 Docker 镜像测试:
- ubuntu:22.04
1. 安装所需的依赖项
更新您的软件包列表并安装必要的开发工具和库:
apt-get update
apt-get install -y sudo
sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool
2. 安装 CMake
使用 `pip3` 安装 CMake 并链接它以供系统范围访问:
pip3 install cmake==3.31.6
sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake
cmake --version
注意:CMake 版本 3.31.6 是支持的最新版本。不能使用更新的版本。
3. 下载 Redis 源码
从 GitHub 下载特定版本的 Redis 源代码归档。
将 `` 替换为 Redis 版本,例如:`8.0.0`。
cd /usr/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
4. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd /usr/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
5. 构建 Redis
设置必要的环境变量并构建 Redis:
cd /usr/src/redis-
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
6. 运行 Redis
cd /usr/src/redis-
./src/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - Ubuntu 24.04 (Noble)
使用以下 Docker 镜像测试:
- ubuntu:24.04
1. 安装所需的依赖项
更新您的软件包列表并安装必要的开发工具和库:
apt-get update
apt-get install -y sudo
sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool
2. 下载 Redis 源码
从 GitHub 下载特定版本的 Redis 源代码归档。
将 `` 替换为 Redis 版本,例如:`8.0.0`。
cd /usr/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
3. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd /usr/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
4. 构建 Redis
设置必要的环境变量并构建 Redis:
cd /usr/src/redis-
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
5. 运行 Redis
cd /usr/src/redis-
./src/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - Debian 11 (Bullseye) / 12 (Bookworm)
使用以下 Docker 镜像测试:
- debian:bullseye
- debian:bullseye-slim
- debian:bookworm
- debian:bookworm-slim
1. 安装所需的依赖项
更新您的软件包列表并安装必要的开发工具和库:
apt-get update
apt-get install -y sudo
sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool
2. 下载 Redis 源码
从 GitHub 下载特定版本的 Redis 源代码归档。
将 `` 替换为 Redis 版本,例如:`8.0.0`。
cd /usr/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
3. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd /usr/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
4. 构建 Redis
设置必要的环境变量并构建 Redis:
cd /usr/src/redis-
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
5. 运行 Redis
cd /usr/src/redis-
./src/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - AlmaLinux 8.10 / Rocky Linux 8.10
使用以下 Docker 镜像测试:
- almalinux:8.10
- almalinux:8.10-minimal
- rockylinux/rockylinux:8.10
- rockylinux/rockylinux:8.10-minimal
1. 准备系统
对于 8.10-minimal,按如下方式安装 `sudo` 和 `dnf`:
microdnf install dnf sudo -y
对于 8.10(普通版),按如下方式安装 sudo:
dnf install sudo -y
清理软件包元数据,启用所需的存储库,并安装开发工具:
sudo dnf clean all
sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <` 替换为 Redis 版本,例如:`8.0.0`。
cd /usr/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
5. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd /usr/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
6. 构建 Redis
启用 GCC 工具集,设置必要的环境变量,并构建 Redis:
source /etc/profile.d/gcc-toolset-13.sh
cd /usr/src/redis-
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
7. 运行 Redis
cd /usr/src/redis-
./src/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - AlmaLinux 9.5 / Rocky Linux 9.5
使用以下 Docker 镜像测试:
- almalinux:9.5
- almalinux:9.5-minimal
- rockylinux/rockylinux:9.5
- rockylinux/rockylinux:9.5-minimal
1. 准备系统
对于 9.5-minimal,按如下方式安装 `sudo` 和 `dnf`:
microdnf install dnf sudo -y
对于 9.5(普通版),按如下方式安装 sudo:
dnf install sudo -y
清理软件包元数据,启用所需的存储库,并安装开发工具:
sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <` 替换为 Redis 版本,例如:`8.0.0`。
cd /usr/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
5. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd /usr/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
6. 构建 Redis
启用 GCC 工具集,设置必要的环境变量,并构建 Redis:
source /etc/profile.d/gcc-toolset-13.sh
cd /usr/src/redis-
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
7. 运行 Redis
cd /usr/src/redis-
./src/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - macOS 13 (Ventura) 和 macOS 14 (Sonoma)
1. 安装 Homebrew
如果尚未安装 Homebrew,请按照 [Homebrew 主页](https://brew.sh/) 上的安装说明进行操作。
2. 安装所需的软件包
export HOMEBREW_NO_AUTO_UPDATE=1
brew update
brew install coreutils
brew install make
brew install openssl
brew install llvm@18
brew install cmake
brew install gnu-sed
brew install automake
brew install libtool
brew install wget
3. 安装 Rust
构建 JSON 包需要 Rust。
RUST_INSTALLER=rust-1.80.1-$(if [ "$(uname -m)" = "arm64" ]; then echo "aarch64"; else echo "x86_64"; fi)-apple-darwin
wget --quiet -O ${RUST_INSTALLER}.tar.xz https://static.rust-lang.org/dist/${RUST_INSTALLER}.tar.xz
tar -xf ${RUST_INSTALLER}.tar.xz
(cd ${RUST_INSTALLER} && sudo ./install.sh)
4. 下载 Redis 源码
从 GitHub 下载特定版本的 Redis 源代码归档。
将 `` 替换为 Redis 版本,例如:`8.0.0`。
cd ~/src
wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz
5. 解压源码归档
为源代码创建一个目录并将内容解压到其中:
cd ~/src
tar xvf redis-.tar.gz
rm redis-.tar.gz
6. 构建 Redis
cd ~/src/redis-
export HOMEBREW_PREFIX="$(brew --prefix)"
export BUILD_WITH_MODULES=yes
export BUILD_TLS=yes
export DISABLE_WERRORS=yes
PATH="$HOMEBREW_PREFIX/opt/libtool/libexec/gnubin:$HOMEBREW_PREFIX/opt/llvm@18/bin:$HOMEBREW_PREFIX/opt/make/libexec/gnubin:$HOMEBREW_PREFIX/opt/gnu-sed/libexec/gnubin:$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
export LDFLAGS="-L$HOMEBREW_PREFIX/opt/llvm@18/lib"
export CPPFLAGS="-I$HOMEBREW_PREFIX/opt/llvm@18/include"
mkdir -p build_dir/etc
make -C redis-8.0 -j "$(nproc)" all OS=macos
make -C redis-8.0 install PREFIX=$(pwd)/build_dir OS=macos
7. 运行 Redis
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
build_dir/bin/redis-server redis-full.conf
### 构建并运行包含所有数据结构的 Redis - macOS 15 (Sequoia)
支持和说明将在稍后提供。
### 构建 Redis - 标志和一般说明
Redis 可以在 Linux、OSX、OpenBSD、NetBSD、FreeBSD 上编译和使用。
我们支持大端和小端架构,以及 32 位和 64 位系统。
它可能可以在 Solaris 派生系统(例如 SmartOS)上编译,但我们对这个平台的支持是 _尽力而为_ 的,并且不保证 Redis 能像在 Linux、OSX 和 \*BSD 上那样正常工作。
要构建包含所有数据结构(包括 JSON、时间序列、Bloom filter、cuckoo filter、count-min sketch、top-k 和 t-digest)以及 Redis Query Engine 的 Redis,请首先确保已安装所有先决条件(请参阅上面的每个操作系统的构建说明)。您需要在 make 命令中使用以下标志:
```
make BUILD_WITH_MODULES=yes
```
注意:32 位系统不支持 `BUILD_WITH_MODULES=yes`。
要仅使用核心数据结构构建 Redis,请使用:
```
make
```
要使用 TLS 支持进行构建,您需要 OpenSSL 开发库(例如 Debian/Ubuntu 上的 libssl-dev)以及 make 命令中的以下标志:
```
make BUILD_TLS=yes
```
要使用 systemd 支持进行构建,您需要 systemd 开发库(例如 Debian/Ubuntu 上的 libsystemd-dev 或 CentOS 上的 systemd-devel),以及以下标志:
```
make USE_SYSTEMD=yes
```
要将后缀附加到 Redis 程序名称,请添加以下标志:
```
make PROG_SUFFIX="-alt"
```
您可以使用以下命令构建 32 位 Redis 二进制文件:
```
make 32bit
```
构建 Redis 后,最好使用以下命令对其进行测试:
```
make test
```
如果构建了 TLS,则在启用 TLS 的情况下运行测试(您需要安装 `tcl-tls`):
```
./utils/gen-test-certs.sh
./runtest --tls
```
### 修复依赖项或缓存构建选项的构建问题
Redis 有一些依赖项包含在 `deps` 目录中。即使依赖项的源代码发生了变化,`make` 也不会自动重建依赖项。
当您使用 `git pull` 更新源代码时,或者当依赖项树中的代码以任何其他方式被修改时,请确保使用以下命令真正清理所有内容并从头开始重建:
```
make distclean
```
这将清理:jemalloc、lua、hiredis、linenoise 和其他依赖项。
此外,如果您强制某些构建选项,如 32 位目标、无 C 编译器优化(用于调试目的)和其他类似的构建时选项,这些选项将被无限期缓存,直到您发出 `make distclean`
命令。
### 修复构建 32 位二进制文件的问题
如果在使用 32 位目标构建 Redis 后,您需要使用 64 位目标重建它,
或者反之,您需要在 Redis 分发版的根目录中执行 `make distclean`。
如果在尝试构建 Redis 的 32 位二进制文件时遇到构建错误,请尝试以下步骤:
- 安装软件包 libc6-dev-i386(也可以尝试 g++-multilib)。
- 尝试使用以下命令行代替 `make 32bit`:
`make CFLAGS="-m32 -march=native" LDFLAGS="-m32"`
### 分配器
在构建 Redis 时选择非默认内存分配器是通过设置 `MALLOC` 环境变量来完成的。Redis 默认使用 libc malloc 进行编译和链接,除了在 Linux 系统上默认为 jemalloc。选择此默认值是因为事实证明 jemalloc 比 libc malloc 具有更少的碎片问题。
要强制针对 libc malloc 进行编译,请使用:
```
make MALLOC=libc
```
要在 Mac OS X 系统上针对 jemalloc 进行编译,请使用:
```
make MALLOC=jemalloc
```
### 单调时钟
默认情况下,Redis 将使用 POSIX clock_gettime 函数作为单调时钟源进行构建。在大多数现代系统上,可以使用内部处理器时钟来提高性能。注意事项可以在这里找到:http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/
在 ARM aarch64 系统上,硬件时钟默认启用,因为 ARM Generic Timer 在架构上保证在所有 ARMv8-A 处理器上可用且单调(请参阅 *Arm Architecture Reference Manual for Armv8-A* 的 *“The Generic Timer in AArch64 state”* 部分)。
要在其他架构上构建对处理器内部指令时钟的支持,请使用:
```
make CFLAGS="-DUSE_PROCESSOR_CLOCK"
```
### 详细构建
默认情况下,Redis 将使用用户友好的彩色输出进行构建。
如果您想查看更详细的输出,请使用以下内容:
```
make V=1
```
### 使用 TLS 运行 Redis
有关如何使用带有 TLS 的 Redis 的更多信息,请查阅 [TLS.md](TLS.md) 文件。
### 使用 Query Engine 和可选的专有 Intel SVS-VAMANA 优化运行 Redis
**许可免责声明**
如果您在 AGPLv3 或 SSPLv1 下使用 Redis Open Source,则不能将其与 Intel Optimizations(Leanvec 和 LVQ 二进制文件)一起使用。原因是 Intel SVS 许可证与这些许可证不兼容。
Leanvec 和 LVQ 技术是闭源的,仅在 RSPLv2 许可证下分发时可用于 Redis Open Source。
有关更多详细信息,请参阅 Intel 提供的信息 [此处](https://github.com/intel/ScalableVectorSearch)。
默认情况下,带有 Redis Query Engine 的 Redis 支持具有全局 8 位量化的 SVS-VAMANA 索引。要使用 Intel SVS-VAMANA 优化、LeanVec 和 LVQ 编译 Redis,请使用以下内容:
```
make BUILD_INTEL_SVS_OPT=yes
```
或者,您可以在为您的平台运行构建步骤之前导出变量:
```
export BUILD_INTEL_SVS_OPT=yes
make
```
## 代码贡献
通过任何形式向 Redis 项目贡献代码,包括通过 GitHub 发送拉取请求、通过私人电子邮件或公共讨论组发送代码片段或补丁,即表示您同意根据 Redis Software Grant and Contributor License Agreement 的条款发布您的代码。有关更多信息,请参阅此源代码分发中的 CONTRIBUTING.md 文件。有关安全错误和漏洞,请参阅 SECURITY.md 以及用户在 BSDv3 下的 Redis Open Source 7.4+ 中反向移植安全补丁的能力说明。开源 Redis 版本受以下许可证约束:
1. 版本 7.2.x 及更早版本受 BSDv3 约束。对原始 Redis 核心项目的这些贡献归其贡献者所有,并按 REDISCONTRIBUTIONS.txt 文件中的引用在 3BSDv3 许可证下许可。此存储库中该许可证的任何副本仅适用于这些贡献;
2. 版本 7.4.x 到 7.8.x 受您选择的 RSALv2 或 SSPLv1 约束;以及
3. 版本 8.0.x 及后续版本受您选择的三重许可 RSALv2/SSPLv1/AGPLv3 约束,如 LICENSE.txt 文件中引用的那样。
## Redis 商标
商标的目的是识别个人或公司的商品和服务,而不会引起混淆。作为其名称和徽标的注册所有者,Redis 接受对其商标的某些有限使用,但必须遵循其商标指南中描述的要求,可在此处获得:https://redis.io/legal/trademark-policy/。
标签:AI, cli, Debian, Redis, Redis Insight, rizin, 中间件, 会话存储, 内存数据库, 发布订阅, 可视化界面, 向量搜索, 向量数据库, 大数据, 实时数据处理, 客户端加密, 客户端加密, 底层编程, 开源, 数据库, 数据结构服务器, 文档数据库, 流处理, 消息队列, 生成式AI, 目录扫描, 索引, 缓存, 自动化代码审查, 键值存储