对于构建实时数据驱动应用程序的开发者来说,Redis 是首选、速度最快、功能最丰富的缓存、数据结构服务器以及文档和向量查询引擎。
Redis 在各种应用中表现出色,包括:
Redis 凭借其速度、灵活性和丰富的功能集,成为全球开发者的热门之选。以下是人们选择 Redis 的原因:
总而言之,Redis 提供了一个强大、快速且灵活的工具包,可用于解决各种数据管理挑战。如果您想了解更多信息,以下是一些入门指南:
Redis 社区版 (Redis CE) 在 v8.0 版本中更名为 Redis 开源版。
Redis Ltd. 还提供 Redis Software,这是一款自主管理的软件,具有更高的合规性、可靠性和弹性,适用于企业扩展;
以及 Redis Cloud,这是一款与 Google Cloud、Azure 和 AWS 集成的完全托管服务,适用于生产级应用。
点击此处,了解更多关于 Redis 开源版和 Redis 的区别。
如果您想快速启动并运行 Redis,而无需从源代码构建,请使用以下方法之一:
docker run -d -p 6379:6379 redis:latest
如果您更喜欢从源代码构建 Redis - 请参阅以下说明。
为了尽快使用您选择的语言开始使用,请使用以下入门项目之一:
要将您的应用程序连接到 Redis,您需要一个客户端库。Redis 已记录了大多数流行语言的客户端库,并且社区还支持其他语言的客户端库。
redis-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 集成了 Redis Copilot,这是一款自然语言 AI 助手,可提升数据和命令操作的体验。
Redis 提供多种数据类型、处理引擎和功能,以支持广泛的用例:
**重要提示:**标有星号 (*) 的功能要求在从源代码构建 Redis 时使用 BUILD_WITH_MODULES=yes
标志进行编译。
本节介绍如何从源代码构建 Redis。如果您想快速启动并运行 Redis,而无需从源代码构建,请参阅入门部分。
已使用以下 Docker 镜像测试:
更新您的软件包列表并安装必要的开发工具和库:
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
将系统默认编译器更新为 GCC 10:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
使用 pip3
安装 CMake 并将其链接至系统范围:
pip3 install cmake==3.31.6
sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake
cmake --version
注意:CMake 3.31.6 是最新支持的版本。无法使用更高版本。
从 GitHub 下载特定版本的 Redis 源代码库。
将 <version>
替换为 Redis 版本,例如:8.0.0
。
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
创建一个目录存放源码,并将内容解压到其中:
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
设置必要的环境变量并编译 Redis:
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf
已使用以下 Docker 镜像测试:
更新软件包列表并安装必要的开发工具和库:
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
从 GitHub 下载特定版本的 Redis 源代码存档。
将 <version>
替换为 Redis 版本,例如:8.0.0
。
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
创建一个目录存放源码,并将内容解压到其中:
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
设置必要的环境变量并构建 Redis:
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf
已使用以下 Docker 镜像测试:
更新软件包列表并安装必要的开发工具和库:
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
从 GitHub 下载特定版本的 Redis 源代码存档。
将 <version>
替换为 Redis 版本,例如:8.0.0
。
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
创建一个目录存放源码,并将内容解压到其中:
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
设置必要的环境变量并构建 Redis:
cd /usr/src/redis-<version>
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
make -j "$(nproc)" all
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf
已使用以下 Docker 镜像测试:
对于 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 <<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
更新软件包列表并安装必要的开发工具和库:
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 虚拟环境:
python3.11 -m venv /opt/venv
启用 GCC 工具集:
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
手动安装 CMake 3.25.1:
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
从 GitHub 下载特定版本的 Redis 源代码库。
将 <version>
替换为 Redis 版本,例如:8.0.0
。
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
创建一个目录存放源码,并将内容解压到其中:
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
启用 GCC 工具集,设置必要的环境变量,并编译 Redis:
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
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf
已使用以下 Docker 镜像测试:
对于 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 <<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
更新软件包列表并安装必要的开发工具和库:
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 虚拟环境:
python3 -m venv /opt/venv
启用 GCC工具集:
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
手动安装 CMake 3.25.1:
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
从 GitHub 下载特定版本的 Redis 源代码库。
将 <version>
替换为 Redis 版本,例如:8.0.0
。
cd /usr/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
创建一个目录存放源码,并将内容解压到其中:
cd /usr/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
启用 GCC 工具集,设置必要的环境变量,并编译 Redis:
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
cd /usr/src/redis-<version>
./src/redis-server redis-full.conf
如果尚未安装 Homebrew,请按照 Homebrew 主页 上的安装说明进行操作。
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
构建 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)
从 GitHub 下载特定版本的 Redis 源代码包。
将 <version>
替换为 Redis 版本,例如:8.0.0
。
cd ~/src
wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
创建一个目录存放源码,并将内容解压到其中:
cd ~/src
tar xvf redis-<version>.tar.gz
rm redis-<version>.tar.gz
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
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
build_dir/bin/redis-server redis-full.conf
支持和说明将在稍后提供。
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 命令中使用以下标志:
make 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 命令中使用以下标志:
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 位目标系统上构建 Redis 后,需要将其重新构建到 64 位目标系统,或者反过来,则需要在 Redis 发行版的根目录中执行 make distclean
命令。
如果在尝试构建 32 位 Redis 二进制文件时出现构建错误,请尝试以下步骤:
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/
要构建支持处理器内部指令时钟的版本,请使用:
make CFLAGS="-DUSE_PROCESSOR_CLOCK"
Redis 默认会以用户友好的彩色输出方式进行构建。
如果您想查看更详细的输出,请使用以下命令:
make V=1
有关如何在 Redis 中使用 TLS 的更多信息,请参阅 TLS.md 文件。
通过任何形式向 Redis 项目贡献代码,包括通过 GitHub 发送拉取请求、通过私人电子邮件或公共讨论组提交代码片段或补丁,即表示您同意根据 Redis 软件授权和贡献者许可协议的条款发布您的代码。请参阅此源代码发行版中的 CONTRIBUTING.md 文件了解更多信息。有关安全漏洞和漏洞,请参阅 SECURITY.md 文件以及用户在 BSDv3 下向后移植 Redis 开源 7.4+ 版本安全补丁的能力说明。开源 Redis 版本受以下许可证约束:
7.2.x 版本及之前的版本受 BSDv3 许可证约束。这些对原始 Redis 核心项目的贡献归其贡献者所有,并根据 REDISCONTRIBUTIONS.txt 文件中引用的 3BSDv3 许可证获得许可。本存储库中该许可证的任何副本仅适用于这些贡献;
7.4.x 至 7.8.x 版本受 RSALv2 或 SSPLv1 许可证约束;和
8.0.x 版本及后续版本受三重许可证 RSALv2/SSPLv1/AGPLv3 的约束,您可以选择使用,具体请参见 LICENSE.txt 文件。
商标的目的是识别个人或公司的商品和服务,而不会造成混淆。作为其名称和徽标的注册所有者,Redis 接受对其商标的某些有限使用,但必须遵守其商标指南中规定的要求,该指南可访问:https://redis.io/legal/trademark-policy/。