Redis是速度最快、功能最丰富的缓存数据库

Redis


目录

什么是 Redis?

对于构建实时数据驱动应用程序的开发者来说,Redis 是首选、速度最快、功能最丰富的缓存、数据结构服务器以及文档和向量查询引擎。

主要用例

Redis 在各种应用中表现出色,包括:

  • 缓存:支持多种驱逐策略、键过期和哈希字段过期。
  • 分布式会话存储:提供灵活的会话数据模型(字符串、JSON、哈希)。
  • 数据结构服务器:提供低级数据结构(字符串、列表、集合、哈希、有序集合、JSON 等)和高级语义(计数器、队列、排行榜、速率限制器),并支持事务和脚本。
  • NoSQL 数据存储:键值、文档和时间序列数据存储。
  • 搜索和查询引擎:为哈希/JSON 文档建立索引,支持向量搜索、全文搜索、地理空间查询、排名和聚合,通过 Redis 查询引擎实现。
  • 事件存储和消息代理:实现队列(列表)、优先级队列(有序集合)、事件重复数据删除(集合)、流和发布/订阅,并具备概率流处理功能。
  • GenAI 向量存储:与 AI 应用程序(例如 LangGraph、mem0)集成,用于短期记忆、长期记忆、LLM 响应缓存(语义缓存)和检索增强生成 (RAG)。
  • 实时分析:支持个性化、推荐、欺诈检测和风险评估。

为什么选择 Redis?

Redis 凭借其速度、灵活性和丰富的功能集,成为全球开发者的热门之选。以下是人们选择 Redis 的原因:

  • 性能:由于 Redis 主要将数据保存在内存中,并使用高效的数据结构,因此其读写操作的延迟极低(通常为亚毫秒级)。这使其成为要求实时响应的应用程序的理想选择。
  • 灵活性:Redis 不仅仅是一个键值存储,它还原生支持 什么是 Redis? 中列出的各种数据结构和功能。
  • 可扩展性:Redis 不仅限于内置数据结构,它还拥有一个 模块 API,可以扩展 Redis 功能并快速实现新的 Redis 命令。
  • 简单性:Redis 拥有简单的基于文本的协议和 文档齐全的命令集
  • 通用性:Redis 已在大规模生产工作负载中经过了实战检验。您很可能每天都会间接地与 Redis 交互多次。
  • 多功能性:Redis 是以下用例的实际标准:
    • 缓存:快速访问常用数据,无需查询主数据库
    • 会话管理:读取和写入用户会话数据,而不会影响用户体验或降低每次 API 调用的速度
    • 查询、排序和分析:尽可能快地对内存数据执行重复数据删除、全文搜索和二级索引
    • 消息传递和服务间通信:作业队列、消息代理、发布/订阅和用于服务间通信的流
    • 向量操作:长期和短期 LLM 内存、RAG 内容检索、语义缓存、语义路由和向量相似性搜索

总而言之,Redis 提供了一个强大、快速且灵活的工具包,可用于解决各种数据管理挑战。如果您想了解更多信息,以下是一些入门指南:

什么是 Redis 开源?

Redis 社区版 (Redis CE) 在 v8.0 版本中更名为 Redis 开源版。

Redis Ltd. 还提供 Redis Software,这是一款自主管理的软件,具有更高的合规性、可靠性和弹性,适用于企业扩展;
以及 Redis Cloud,这是一款与 Google Cloud、Azure 和 AWS 集成的完全托管服务,适用于生产级应用。

点击此处,了解更多关于 Redis 开源版和 Redis 的区别。

入门

如果您想快速启动并运行 Redis,而无需从源代码构建,请使用以下方法之一:

sh 复制代码
docker run -d -p 6379:6379 redis:latest

如果您更喜欢从源代码构建 Redis - 请参阅以下说明。

Redis 入门项目

为了尽快使用您选择的语言开始使用,请使用以下入门项目之一:

使用 Redis 客户端库

要将您的应用程序连接到 Redis,您需要一个客户端库。Redis 已记录了大多数流行语言的客户端库,并且社区还支持其他语言的客户端库。

使用 redis-cli 来使用 Redis

redis-cli 是 Redis 的命令行界面。它包含在所有二进制发行版中,也可以在从源代码构建 Redis 时使用。

您可以启动一个 redis-server 实例,然后在另一个终端中尝试以下命令:

sh 复制代码
cd src
./redis-cli
sh 复制代码
redis> ping
PONG
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer) 1
redis> incr mycounter
(integer) 2
redis>

将 Redis 与 Redis Insight 结合使用

为了获得更直观、更友好的用户体验,请使用 Redis Insight - 这款工具不仅能帮助您探索数据、设计、开发和优化应用程序,还能作为 Redis 培训和入门平台。Redis Insight 集成了 Redis Copilot,这是一款自然语言 AI ​​助手,可提升数据和命令操作的体验。

Redis 数据类型、处理引擎和功能

Redis 提供多种数据类型、处理引擎和功能,以支持广泛的用例:

**重要提示:**标有星号 (*) 的功能要求在从源代码构建 Redis 时使用 BUILD_WITH_MODULES=yes 标志进行编译。

  • String 字节序列,包括文本、序列化对象和用于缓存、计数器和按位运算的二进制数组。
  • JSON 嵌套的 JSON 文档,可使用 JSONPath 表达式和 Redis 查询引擎 进行索引和搜索
  • Hash 用于表示基本对象并存储键值对分组的字段-值映射,支持 哈希字段过期时间 (TTL)
  • Redis Query Engine 将 Redis 用作文档数据库、矢量数据库、二级索引和搜索引擎。为哈希和 JSON 文档定义索引,然后使用丰富的查询语言进行向量搜索、全文搜索、地理空间查询和聚合。
  • List 字符串值的链接列表,用作堆栈、队列和队列管理。
  • Set 用于跟踪唯一项、关系和常见集合运算(交集、并集、差集)的唯一字符串的无序集合。
  • Sorted set 按关联分数排序的唯一字符串集合,用于排行榜和速率限制器。
  • Vector set(测试版) 用于语义相似性搜索、语义缓存、语义路由和检索增强生成 (RAG) 的向量嵌入集合。
  • Geospatial indexes: 用于在给定半径或边界框内查找附近点的坐标。
  • Bitmap 一组基于字符串类型定义的位操作,用于高效的集合表示和对象权限。
  • Bitfield 二进制编码字符串,可用于设置、递增和获取任意位长的整数值,用于有限范围计数器、数值和多级对象权限,例如基于角色的访问控制 (RBAC)。
  • Hyperloglog 一种概率数据结构,用于近似集合的基数,可用于统计唯一访问次数、表单填写等分析。
  • *Bloom filter 一种概率数据结构,用于检查给定值是否存在于集合中。用于欺诈检测、广告投放和唯一列(例如用户名/邮箱/slug)检查。
  • *Cuckoo filter 一种概率数据结构,用于检查给定值是否存在于集合中,同时允许进行有限的计数和删除操作,用于定向广告和优惠券代码验证。
  • *t-digest 一种概率数据结构,用于估算大型数据集的百分位数,而无需存储和排序所有数据点。用于硬件/软件监控、在线游戏、网络流量监控和预测性维护。
  • *Top-k 一种概率数据结构,用于在数据流中查找最频繁的值,从而发现趋势。
  • *Count-min sketch 一种概率数据结构,用于估算给定值在数据流中出现的次数,从而计算销量。
  • Time series 按时间顺序索引的数据点,用于监控传感器数据、资产跟踪和预测分析。
  • Pub/sub: 一种轻量级消息传递功能。发布者向通道发送消息,订阅者从该通道接收消息。
  • Stream 仅追加日志,具有随机访问功能和复杂的消费策略(例如消费者组)。用于事件溯源、传感器监控和通知。
  • Transaction 允许在单个步骤中执行一组命令。在事务执行过程中,其他客户端发送的请求永远不会被处理。这保证了确保所有命令作为单个独立操作执行。
  • Programmability 在服务器上上传并执行 Lua 脚本。脚本可以采用编程控制结构,并在执行过程中使用大多数命令来访问数据库。由于脚本在服务器上执行,因此从脚本读取和写入数据非常高效。

社区

Redis 社区资源

从源代码构建 Redis

本节介绍如何从源代码构建 Redis。如果您想快速启动并运行 Redis,而无需从源代码构建,请参阅入门部分

使用所有数据结构构建并运行 Redis - Ubuntu 20.04 (Focal)

已使用以下 Docker 镜像测试:

  • ubuntu:20.04
  1. 安装所需的依赖项

更新您的软件包列表并安装必要的开发工具和库:

sh 复制代码
   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
  1. 使用 GCC 10 作为默认编译器

将系统默认编译器更新为 GCC 10:

sh 复制代码
   sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
  1. 安装 CMake

使用 pip3 安装 CMake 并将其链接至系统范围:

sh 复制代码
pip3 install cmake==3.31.6
sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake
cmake --version

注意:CMake 3.31.6 是最新支持的版本。无法使用更高版本。

  1. 下载 Redis 源代码

从 GitHub 下载特定版本的 Redis 源代码库。

<version> 替换为 Redis 版本,例如:8.0.0

sh 复制代码
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  1. 解压源码包

创建一个目录存放源码,并将内容解压到其中:

sh 复制代码
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
  1. 构建 Redis

设置必要的环境变量并编译 Redis:

sh 复制代码
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
  1. 运行Redis
sh 复制代码
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf

使用所有数据结构构建并运行 Redis - Ubuntu 22.04 (Jammy) / 24.04 (Noble)

已使用以下 Docker 镜像测试:

  • ubuntu:22.04
  • ubuntu:24.04
  1. 安装所需依赖项

更新软件包列表并安装必要的开发工具和库:

sh 复制代码
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
  1. 下载 Redis 源代码

从 GitHub 下载特定版本的 Redis 源代码存档。

<version> 替换为 Redis 版本,例如:8.0.0

sh 复制代码
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  1. 解压源码包

创建一个目录存放源码,并将内容解压到其中:

sh 复制代码
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
  1. 构建 Redis

设置必要的环境变量并构建 Redis:

sh 复制代码
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
  1. 运行Redis
sh 复制代码
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf

使用所有数据结构构建并运行 Redis - Debian 11 (Bullseye) / 12 (Bookworm)

已使用以下 Docker 镜像测试:

  • debian:bullseye
  • debian:bullseye-slim
  • debian:bookworm
  • debian:bookworm-slim
  1. 安装所需依赖项

更新软件包列表并安装必要的开发工具和库:

sh 复制代码
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
  1. 下载 Redis 源代码

从 GitHub 下载特定版本的 Redis 源代码存档。

<version> 替换为 Redis 版本,例如:8.0.0

sh 复制代码
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  1. 解压源码包

创建一个目录存放源码,并将内容解压到其中:

sh 复制代码
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
  1. 构建 Redis

设置必要的环境变量并构建 Redis:

sh 复制代码
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
  1. 运行Redis
sh 复制代码
cd /usr/src/redis-<version>
./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 系统,请按如下方式安装 sudodnf

sh 复制代码
microdnf install dnf sudo -y

对于 8.10(常规版本),请按如下方式安装 sudo:

sh 复制代码
dnf install sudo -y

清理软件包元数据,启用所需的仓库,并安装开发工具:

sh 复制代码
sudo dnf clean all
sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <<EOF
[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0
EOF
sudo dnf update -y
sudo dnf groupinstall "Development Tools" -y
sudo dnf config-manager --set-enabled powertools
sudo dnf install -y epel-release
  1. 安装所需依赖项

更新软件包列表并安装必要的开发工具和库:

sh 复制代码
sudo dnf install -y --nobest --skip-broken pkg-config wget gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ git make openssl openssl-devel python3.11 python3.11-pip python3.11-devel unzip rsync clang curl libtool automake autoconf jq systemd-devel

创建 Python 虚拟环境:

sh 复制代码
python3.11 -m venv /opt/venv

启用 GCC 工具集:

sh 复制代码
sudo cp /opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.sh
echo "source /etc/profile.d/gcc-toolset-13.sh" | sudo tee -a /etc/bashrc
  1. 安装 CMake

手动安装 CMake 3.25.1:

sh 复制代码
CMAKE_VERSION=3.25.1
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ];然后
CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-x86_64.sh
else
CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-aarch64.sh
fi
wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE}
chmod +x ${CMAKE_FILE}
./${CMAKE_FILE} --skip-license --prefix=/usr/local --exclude-subdir
rm ${CMAKE_FILE}
cmake --version
  1. 下载 Redis 源代码

从 GitHub 下载特定版本的 Redis 源代码库。

<version> 替换为 Redis 版本,例如:8.0.0

sh 复制代码
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  1. 解压源码包

创建一个目录存放源码,并将内容解压到其中:

sh 复制代码
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
  1. 编译 Redis

启用 GCC 工具集,设置必要的环境变量,并编译 Redis:

sh 复制代码
source /etc/profile.d/gcc-toolset-13.sh
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
  1. 运行 Redis
sh 复制代码
cd /usr/src/redis-<version>
./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 系统,请按如下方式安装 sudodnf

sh 复制代码
microdnf install dnf sudo -y

对于 9.5(常规版本),请按如下方式安装 sudo:

sh 复制代码
dnf install sudo -y

清理软件包元数据,启用所需的仓库,并安装开发工具:

sh 复制代码
sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <<EOF
[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0
EOF
sudo dnf clean all
sudo dnf makecache
sudo dnf update -y
  1. 安装所需依赖项

更新软件包列表并安装必要的开发工具和库:

sh 复制代码
sudo dnf install -y --nobest --skip-broken pkg-config xz wget which gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ git make openssl openssl-devel python3 python3-pip python3-devel unzip rsync clang curl libtool automake autoconf jq systemd-devel

创建 Python 虚拟环境:

sh 复制代码
python3 -m venv /opt/venv

启用 GCC工具集:

sh 复制代码
sudo cp /opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.sh
echo "source /etc/profile.d/gcc-toolset-13.sh" | sudo tee -a /etc/bashrc
  1. 安装 CMake

手动安装 CMake 3.25.1:

sh 复制代码
CMAKE_VERSION=3.25.1
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ];然后
CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-x86_64.sh
else
CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-aarch64.sh
fi
wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE}
chmod +x ${CMAKE_FILE}
./${CMAKE_FILE} --skip-license --prefix=/usr/local --exclude-subdir
rm ${CMAKE_FILE}
cmake --version
  1. 下载 Redis 源代码

从 GitHub 下载特定版本的 Redis 源代码库。

<version> 替换为 Redis 版本,例如:8.0.0

sh 复制代码
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  1. 解压源码包

创建一个目录存放源码,并将内容解压到其中:

sh 复制代码
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
  1. 编译 Redis

启用 GCC 工具集,设置必要的环境变量,并编译 Redis:

sh 复制代码
source /etc/profile.d/gcc-toolset-13.sh
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
  1. 运行 Redis
sh 复制代码
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf

使用所有数据结构构建并运行 Redis - macOS 13 (Ventura) 和 macOS 14 (Sonoma)

  1. 安装 Homebrew

如果尚未安装 Homebrew,请按照 Homebrew 主页 上的安装说明进行操作。

  1. 安装所需软件包
sh 复制代码
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
  1. 安装 Rust

构建 JSON 包需要 Rust。

sh 复制代码
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)
  1. 下载 Redis 源代码

从 GitHub 下载特定版本的 Redis 源代码包。

<version> 替换为 Redis 版本,例如:8.0.0

sh 复制代码
cd ~/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  1. 解压源码包

创建一个目录存放源码,并将内容解压到其中:

sh 复制代码
cd ~/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
  1. 构建 Redis
sh 复制代码
cd ~/src/redis-<version>
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
  1. 运行 Redis
sh 复制代码
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、时间序列、布隆过滤器、布谷鸟过滤器、count-min sketch、top-k 和 t-digest)和 Redis 查询引擎构建 Redis,首先请确保已安装所有先决条件(请参阅上面的构建说明,每个操作系统都有相应的说明)。您需要在 make 命令中使用以下标志:

sh 复制代码
make BUILD_WITH_MODULES=yes

要仅使用核心数据结构构建 Redis,请使用:

sh 复制代码
make

要使用 TLS 支持构建,您需要 OpenSSL 开发库(例如 Debian/Ubuntu 上的 libssl-dev)并在 make 命令中使用以下标志:

sh 复制代码
make BUILD_TLS=yes

要使用 systemd 支持构建,您需要 systemd 开发库(例如 Debian/Ubuntu 上的 libsystemd-dev 或 CentOS 上的 systemd-devel)并在 make 命令中使用以下标志:

sh 复制代码
make USE_SYSTEMD=yes

要为 Redis 程序名称添加后缀,请添加以下标志:

sh 复制代码
make PROG_SUFFIX="-alt"

您可以构建 32 位 Redis 二进制文件使用:

sh 复制代码
make 32bit

Redis 构建完成后,建议使用以下命令进行测试:

sh 复制代码
make test

如果已构建 TLS,请在启用 TLS 的情况下运行测试(您需要安装 tcl-tls):

sh 复制代码
./utils/gen-test-certs.sh
./runtest --tls

修复依赖项或缓存构建选项的构建问题

Redis 有一些依赖项包含在 deps 目录中。即使依赖项的源代码发生更改,make 也不会自动重建依赖项。

当您使用 git pull 更新源代码或以任何其他方式修改依赖项树中的代码时,请务必使用以下命令彻底清理所有内容并从头开始构建:

sh 复制代码
make distclean

这将清理:jemalloc、lua、hiredis、linenoise 和其他依赖项。

此外,如果您强制使用某些构建选项,例如 32 位目标、不使用 C 编译器优化(用于调试目的)以及其他类似的构建时选项,这些选项将被无限期缓存,直到您发出“make distclean”命令为止。

修复 32 位二进制文​​件构建问题

如果在 32 位目标系统上构建 Redis 后,需要将其重新构建到 64 位目标系统,或者反过来,则需要在 Redis 发行版的根目录中执行 make distclean 命令。

如果在尝试构建 32 位 Redis 二进制文件时出现构建错误,请尝试以下步骤:

  • 安装 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 进行编译,请使用:

sh 复制代码
make MALLOC=libc

要在 Mac OS X 系统上使用 jemalloc 进行编译,请使用:

sh 复制代码
make MALLOC=jemalloc

单调时钟

默认情况下,Redis 会使用 POSIX clock_gettime 函数作为单调时钟源进行构建。在大多数现代系统上,可以使用内部处理器时钟来提高性能。注意事项请参见:http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/

要构建支持处理器内部指令时钟的版本,请使用:

sh 复制代码
make CFLAGS="-DUSE_PROCESSOR_CLOCK"

详细构建

Redis 默认会以用户友好的彩色输出方式进行构建。
如果您想查看更详细的输出,请使用以下命令:

sh 复制代码
make V=1

使用 TLS 运行 Redis

有关如何在 Redis 中使用 TLS 的更多信息,请参阅 TLS.md 文件。

代码贡献

通过任何形式向 Redis 项目贡献代码,包括通过 GitHub 发送拉取请求、通过私人电子邮件或公共讨论组提交代码片段或补丁,即表示您同意根据 Redis 软件授权和贡献者许可协议的条款发布您的代码。请参阅此源代码发行版中的 CONTRIBUTING.md 文件了解更多信息。有关安全漏洞和漏洞,请参阅 SECURITY.md 文件以及用户在 BSDv3 下向后移植 Redis 开源 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/。

关于项目

对于构建实时数据驱动应用程序的开发人员来说,Redis 是首选、速度最快、功能最丰富的缓存、数据结构服务器以及文档和矢量查询引擎。
Other
C
71,185
24275
2514
2009-03-22
2025-10-12

增长趋势 - stars