redis/redis

GitHub: redis/redis

Redis 是一个开源的高性能内存数据结构存储系统,集缓存、数据库、消息代理和向量搜索引擎于一体,以亚毫秒级延迟和丰富的数据类型著称。

Stars: 73226 | Forks: 24510

[![codecov](https://codecov.io/github/redis/redis/graph/badge.svg?token=6bVHb5fRuz)](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, 目录扫描, 索引, 缓存, 自动化代码审查, 键值存储